android intent.FLAG_ACTIVITY_CLEAR_TOP不起作用

时间:2013-09-25 03:11:12

标签: android android-intent

我正面临着一个问题,经过多次努力,我想我无法解决它。我希望有人可以帮助我。现在以下是我的情况:
活动A启动活动B,活动B自行启动(但活动B中的内容已更改,此步骤可能多次发生)。现在,当我按回键时,如何直接进入活动A. 这是我的代码:

Intent intent = new Intent(QuestionNaireActivity.this, 
                            QuestionNaireActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);startActivity(intent);

我试过以下:
1.使用Intent.FLAG_ACTIVITY_SINGLE_TOP,它直接转到活动A,但是当B转到B时,内容不会改变。
2.使用Intent.FLAG_ACTIVITY_CLEAR_TOP,当转到活动A时,它会报告如下的BUG:

java.lang.RuntimeException: Failure delivering result ResultInfo
 {who=null, request=1000, result=0, data=null} to activity  {com.snt.dauditapp/com.snt.dauditapp.Activity.SubTabFragments.QuestionnaireNavigationDetailActivity}: 
    java.lang.NullPointerException

请建议我。谢谢!

3 个答案:

答案 0 :(得分:0)

使用CLEAR_TOP标志将在您移动到新活动后从堆栈中删除任何先前的活动。 如果你想利用正常的"返回"行为,其中单击返回返回到上一个活动,然后您不需要在intent上指定任何标志。这是默认功能。

我的建议是:始终从活动A开始。如果您需要直接转到B,请确保活动A立即将您引导至B. 这样,在B中单击返回将始终返回A。

希望这有帮助。

答案 1 :(得分:0)

尝试在调用新活动时完成旧的B活动。像这样......

Intent intent = new Intent(QuestionNaireActivity.this, QuestionNaireActivity.class);
startActivity(intent);
finish();

答案 2 :(得分:0)

正在寻找

  

我如何直接进入活动A

在活动B上使用以下内容

@Override
    public void onBackPressed() {

        Intent i = new Intent(this, 
                            ActivityA.class);
               i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
               startActivity(i);
    }