Sid*_*ele 10 android android-activity
在我的应用程序中,我从登录页面启动了一个八步"向导",其中数据从步骤1一直传递到步骤8.为了保持数据完好无损,同时仍处于步骤之间,我没有调用finish()任何一项活动.但是,当所有步骤都完成后,有没有办法可以关闭我开始的所有8个活动并返回到登录页面?
这里有各种各样的例子:
首页 - 步骤1 - > 2 - > 3 - > 4 - > 5 - > 6 - > 7 - > 8
此时,当用户单击"保存"时,关闭所有步骤(8)并返回主页.到目前为止,我一直在创建一个新的意图,但我意识到这不是最好的解决方案.简单的背压将他带回第7步.
任何帮助赞赏.
Var*_*run 20
Intent intent = new Intent(this, Home.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
这将从第8个屏幕中删除之间的所有活动并启动你的同屏幕.你也可以在manifest launchmode ="singleTop"中设置你的主屏幕的活动.看到这个链接 - developer.android.com/guide/topics/fundamentals.html#acttask
另一种方法是使用StartActivityForResult(...)来启动每个活动,并让活动在finish()之前调用setResult().然后在每个Activity的onActivityResult(...)方法中,如果intent为非null,则调用finish().
这将创建完整的堆栈,并在最后完成时自动完成所有堆栈.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data == null) {
return; // back button, resume this activity
}
// Propagate result down the stack.
setResult(0, data);
finish();
}
Run Code Online (Sandbox Code Playgroud)
这为您提供了更多控制,并允许原始活动通过onActivityResult而不是创建意图接收结果,如果原始请求具有您想要保留的其他状态(特别是在其开始意图中),则可能更直观.
| 归档时间: |
|
| 查看次数: |
11931 次 |
| 最近记录: |