我正在为学校制作一个测验应用程序。我有活动A,B,C和D. Activity
A是具有设置数据的主Activity
,包括一个私有int
变量,指定每个问题的时间限制(以秒为单位)。 Activity
B是用户可以选择测验的列表,在该列表中,他们会将Activity
C带到实际测验。当用户完成测验后,它将显示Activity
D显示分数和标有“主页”的按钮以返回主Activity
(A)。
如何在不重新启动主Activity
的情况下从Activity
D返回主Activity
(A)?我尝试了以下方法:
case R.id.homeButton:
Intent backToHomeActivityIntent = new Intent(QuizResultsActivity.this, MainActivity.class);
backToHomeActivityIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(backToHomeActivityIntent);
break;
FLAG_ACTIVITY_CLEAR_TOP
执行我想要的操作的一半,据我所知,它会破坏活动B,C和D.但是,主Activity
(A)重置为默认时间限制而不是从设置Activity
设置的那个(未指定为其中一个字母活动)。我认为它正在启动Main Activity
的新实例。我还尝试了FLAG_ACTIVITY_REORDER_TO_FRONT
,它确实保留了已保存的时间限制,但不会销毁其他活动,只会将主Activity
置于Activity
堆栈的顶部。
我想要做的是从Activity
D转到Activity
A,同时摧毁活动B,C和D WHILE Activity
A的设置和设置变量保持不变他们之前被改变了。我如何实现这一目标?
非常感谢任何帮助或建议。感谢。
答案 0 :(得分:1)
您可以使用Bundle在2个活动之间发送数据。 第1步:将数据添加到包中并发送
Bundle bundle = new Bundle();
bundle.putString("key", "value");
Intent intent = new Intent(A.this, B.class);
intent.putExtras(bundle);
startActivity(intent);
第2步:从包中获取数据
if (getIntent().getExtras() != null) {
Bundle bundle = getIntent().getExtras();
String value = bundle.getString("key");
}
我希望它对你有所帮助。
答案 1 :(得分:1)
您需要做的就是阻止ActivityA
被杀死并重新创建。为此,您需要将FLAG_ACTIVITY_SINGLE_TOP
添加到用于返回Intent
的{{1}}:
A
答案 2 :(得分:0)
你可以尝试startActivityForResult(Intent, int)
See more by click here