android:返回主要活动而不丢失它的数据

时间:2015-11-23 04:21:02

标签: java android android-intent android-activity

我正在为学校制作一个测验应用程序。我有活动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的设置和设置变量保持不变他们之前被改变了。我如何实现这一目标?

非常感谢任何帮助或建议。感谢。

3 个答案:

答案 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