我有一些活动,但无法找到使其与 backstack 一起使用的方法。
有没有办法做到这一点:
MainActivity->(intent) subActivity->(intent)subsubActivity->(back press)subActivity->*(back press)MainActivity
*这是我遇到问题的地方。由于我来自我的 subsubActivity,即使我在清单中使用了 android:noHistory="true",它也不会回到主要活动。
谢谢你的帮助!
我有一些活动,但无法找到使其与 backstack 一起使用的方法。
有没有办法做到这一点:
MainActivity->(intent) subActivity->(intent)subsubActivity->(back press)subActivity->*(back press)MainActivity
*这是我遇到问题的地方。由于我来自我的 subsubActivity,即使我在清单中使用了 android:noHistory="true",它也不会回到主要活动。
谢谢你的帮助!
这是在调用中使用组合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() 的解决方案将是最简单的方法。
如果我得到你想要的你可以使用startActivities和一系列意图,这些意图将一个接一个地被触发 activity1->activity2->activity3 -back-activity2 -back-acitivty1