1

我面临一个问题,经过很多尝试,我想我无法解决它。我希望有人能帮助我。现在以下是我的情况:
Activity A 启动 Activity B ,而 Activity B 自己启动(但是 Activity 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 ,当转到 Activity 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

请给我建议。谢谢!

4

3 回答 3

0

正如你正在寻找

我怎样才能直接去Activity A

在活动 B 上使用以下内容

@Override
    public void onBackPressed() {

        Intent i = new Intent(this, 
                            ActivityA.class);
               i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
               startActivity(i);
    }
于 2013-09-25T04:12:39.017 回答
0

一旦您移动到新活动,使用 CLEAR_TOP 标志将从堆栈中删除任何以前的活动。如果您想利用正常的“返回”行为,即单击返回返回到上一个活动,那么您不需要在意图上指定任何标志。这是默认功能。

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

希望这可以帮助。

于 2013-09-25T03:24:26.423 回答
0

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

Intent intent = new Intent(QuestionNaireActivity.this, QuestionNaireActivity.class);
startActivity(intent);
finish();
于 2013-09-25T03:59:10.977 回答