Java 安卓:返回主活动而不丢失它';s数据

Java 安卓:返回主活动而不丢失它';s数据,java,android,android-intent,android-activity,Java,Android,Android Intent,Android Activity,我正在为学校制作一个测验应用程序。我有活动A、B、C和D。活动A是包含设置数据的主活动,包括一个私有int变量,指定每个问题的时间限制(以秒为单位)活动B是一个列表,用户可以在其中选择测验,并将他们带到活动C进行实际测验。当用户完成测验时,它将进入显示分数的活动D,并使用标记为“主页”的按钮返回主活动(a) 如何在不重新启动主活动的情况下,从活动D返回主活动(A)?我尝试了以下方法: case R.id.homeButton: Intent backToHomeActivityInten

我正在为学校制作一个测验应用程序。我有活动A、B、C和D。
活动
A是包含设置数据的主
活动
,包括一个私有
int
变量,指定每个问题的时间限制(以秒为单位)<代码>活动B是一个列表,用户可以在其中选择测验,并将他们带到
活动
C进行实际测验。当用户完成测验时,它将进入显示分数的
活动
D,并使用标记为“主页”的按钮返回主
活动
(a)

如何在不重新启动主
活动
的情况下,从
活动
D返回主
活动
(A)?我尝试了以下方法:

case R.id.homeButton:
    Intent backToHomeActivityIntent = new Intent(QuizResultsActivity.this, MainActivity.class);
    backToHomeActivityIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(backToHomeActivityIntent);
    break;
标志\u ACTIVITY\u CLEAR\u TOP
完成了我希望它完成的一半,据我所知,它会销毁活动B、C和D。但是,主
活动
(A)重置为默认时间限制,而不是从设置
活动
(未指定为字母活动之一)中设置的时间限制。我认为它正在启动主
活动的一个新实例。我还尝试了
标记\u活动\u重新排序\u到\u前端
,它确实保留了保存的时间限制,但不会破坏其他活动,只会将主
活动
带到
活动
堆栈的顶部

我想做的是从
Activity
D转到
Activity
A,同时销毁活动B、C和D,而
Activity
A的设置和设置变量与以前更改时保持一致。我如何做到这一点


任何帮助或建议都将不胜感激。谢谢。

您可以尝试
startActivityForResult(Intent,int)

您可以使用Bundle在两个活动之间发送数据。 步骤1:将数据添加到捆绑包并发送

        Bundle bundle = new Bundle();
        bundle.putString("key", "value");
        Intent intent = new Intent(A.this, B.class);
        intent.putExtras(bundle);
        startActivity(intent);
步骤2:从bundle获取数据

        if (getIntent().getExtras() != null) {
            Bundle bundle = getIntent().getExtras();
            String value = bundle.getString("key");
        }

我希望它能对您有所帮助。

您需要做的就是防止活动a
被杀死和重新创建。为此,您需要将
FLAG\u ACTIVITY\u SINGLE\u TOP
添加到用于返回
A
Intent

backToHomeActivityIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

谢谢,这很有效。但后来我了解到,活动中包含应用程序设置是不可靠的,我应该使用
SharedReferences
API,这样即使在应用程序终止后,设置也会保持不变。因此,我得到了另一个API添加到我的项目中,以获得更高的分数!:D我仍然认为这个问题是正确的,因为它确实解决了最初的问题,而且我还使用了FLAG_ACTIVITY_CLEAR_TOP。非常感谢你的回答,伙计。你帮我省了很多麻烦:D