1

我有一些活动,但无法找到使其与 backstack 一起使用的方法。

有没有办法做到这一点:

MainActivity->(intent) subActivity->(intent)subsubActivity->(back press)subActivity->*(back press)MainActivity

*这是我遇到问题的地方。由于我来自我的 subsubActivity,即使我在清单中使用了 android:noHistory="true",它也不会回到主要活动。

谢谢你的帮助!

4

2 回答 2

1

这是在调用中使用组合startActivityForResult和覆盖的完美选择。onActivityResultActivity

假设你有Activity A, which 开始Activity B(我们不能回到它), which 开始Activity C

Activity A会叫Activity B你现在的样子。Activity B但是,将调用startActivityForResult(Intent, int)而不是仅仅调用startActivity(Intent)。这样,当我们从 中返回时Activity C,我们可以调用finish()Activity B返回到Activity A,如下所示:

public class ActivityB extends Activity {

    private static final int REQUEST_CODE_ACTIVITY_C = 1001; 

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        if(requestCode == REQUEST_CODE_ACTIVITY_C) finish(); // If coming back from Activity C, finish()
    }

    private void openActivityC(){
        Intent intent = new Intent(this, ActivityC.class);
        startActivityForResult(intent, REQUEST_CODE_ACTIVITY_C);
    }

}

现在,当您调用时openActivityC(),您可以确保onActivityResult()在从返回时调用它Activity C,从而允许您结束Activity并返回到Activity A.

您可以为状态提供更具体的操作(例如设置/检查结果代码(例如,如果它取消 ( Activity.RESULT_CANCELED) 或成功 ( Activity.RESULT_OK)),以更好地确定调用Activity应该做什么。

希望这有助于解释一下。

编辑:也是事后的想法,如果你没有机会回到活动 B,那么@Kay 在触发活动 C 的 Intent 后调用 finish() 的解决方案将是最简单的方法。

于 2015-03-26T20:44:08.817 回答
0

如果我得到你想要的你可以使用startActivities和一系列意图,这些意图将一个接一个地被触发 activity1->activity2->activity3 -back-activity2 -back-acitivty1

于 2015-03-26T19:12:07.853 回答