java - Sherlock Activity 中的 Intent.FLAG_ACTIVITY_CLEAR_TOP 未达到目的

标签 java android android-intent actionbarsherlock

场景:

我有四个 Activity :A、B、C 和 HomeActivityA 是我的 launcher Activity 。我正在使用 actionbarSherlock,所以 A、B 和 C 在栏中有 menu 选项。

流程是:

 A-> B-> C --**On submit in C**--> HomeActivity

现在,当我在 Home Activity 上按 Back 按钮时,它会返回到 activity B,就像在 C 中单击 Submit 后一样,我正在使用

     Intent intent = new Intent(this, HomeActivity.class);
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP );  //Shouldn't this clear A,B and C ??
    //intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP );
    startActivity(intent);
            finish();

但我只想在提交数据然后启动时才留在 HomeActivity 上。

此外,如果在 A、B、C 上按下菜单按钮,则会启动 HomeActivity,在这种情况下,我希望有 Back 按钮的默认行为(即返回到按下菜单的 Activity )

关于如何做到这一点的任何见解都没有达到目的!

(注:HomeActivity 不是启动器 Activity )

最佳答案

我认为您在转到 Home Activity -> Activity A 时完成了 Home Acitivity。当您使用 clear top flag 时,您的 Home Activity 应该在您的堆栈中处于 Activity 状态。请确保您没有完成主页 Activity 。

并将这段代码放在您的 Home Activity 中的 onKeyDown() 方法中。

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Log.e("onkeyDown>>>>", "Called>>>>>");
            finish();
        }
        return super.onKeyDown(keyCode, event);
    } 

查看更多详细信息,查看此 link:

其他方式

编辑:

尝试把上面的代码放到Activity A中。

从您的代码中删除 finish() 方法,如下所示:

Intent intent = new Intent(this, HomeActivity.class);
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP );  //Shouldn't this clear A,B and C ??
    //intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP );
    startActivity(intent);

And Most Important thing Don't Finish your Activity A launcher Activity for Clear top method it should be in stack of Activity remain present in your device.

希望能解决您的问题。

关于java - Sherlock Activity 中的 Intent.FLAG_ACTIVITY_CLEAR_TOP 未达到目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16664974/

相关文章:

java - 尝试在 shell 脚本中同时运行 hadoop MapReduce 命令和 linux 命令

java - 如何在android中设备方向改变后保持listview项目的高亮

android - 发送 AVRCP 播放命令,收到广播垃圾邮件

java - 在执行时运行两个 .jar 文件

java - 广播接收器或接口(interface)在两个 Activity 之间进行通信?

java - Hibernate:使用命名查询时出现意外错误

android - AssetManager 列表不返回任何内容

android - 离线时从缓存加载 webview

android - 如何在 backpress 上销毁的通知(activity2)启动 Activity 后启动 MainActivity(activity1)

android - 在 Android 上的 Facebook 应用程序(如果已安装)中打开 Facebook 页面