场景:

我有四个活动:A, B, C and HomeActivityA是我的launcher活动。我正在使用actionbarSherlock,因此A,B和C在栏中具有menu选项。

流程是:

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


现在,当我在“家庭活动”上按Back按钮时,它会返回到activity B,就像在C中单击“提交”后,正在使用

     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按钮的默认行为(即回到按下菜单的活动)

关于如何执行此操作的任何见解,因为FLAG_ACTIVITY_CLEAR_TOP达不到目的!

(注:HomeActivity不是启动程序活动)

最佳答案

我认为您在进入“家庭活动”->“活动A”时完成了“家庭活动”。当您使用clear top标志时,您的家庭活动应该在堆栈中仍然存在。请确保您还没有完成家庭活动。

并将此代码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:

另一种方式

编辑:

尝试将上述代码放入活动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);



  最重要的事情是不要完成您的活动
  清除顶部方法的活动应保留在活动堆栈中
  存在于您的设备中。


希望它能解决您的问题。

07-28 03:24
查看更多