Android:在旋转重启活动后调用活动结束()

时间:2017-09-29 13:04:46

标签: java android

我有一个Android工作室项目,包括3个活动,A1,A2和A3。

A1开始A2,A2开始A3或返回A1。在A3中,您可以通过按两个不同的按钮返回A2或将一些更新的信息返回到A1。

我将数据从A3返回到A1的想法是将其传递给A2,然后在其onActivityResult方法中调用A2上的finish()。虽然我不知道这是最好的方法,但似乎有效。

现在如果我不旋转设备就没有任何问题,信息从A3返回到A1。如果我旋转一次,然后按任一按钮,它会重新启动活动A3,我无法找出原因。将其旋转一次然后再返回也可以按预期工作。

以下是一些代码段。

从A2开始A3

    infoIntent.setClass(this, A3.class);
    if(infoSet)
    {
        infoIntent.putExtra("tvName", name);
        infoIntent.putExtra("tvMemory", memory);
        infoIntent.putExtra("tvLaptop", laptop);
    }
    startActivityForResult(infoIntent, REQUEST_CODE_EDIT);

在A3中设置按钮侦听器

        btnOk.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            returnAndUpdateInfo(view);
        }
    });

    btnCancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            setResult(RESULT_CANCELED, infoIntent);
            finish();
        }
    });

我不能为我的生活弄清楚为什么A3只有在屏幕旋转一次后才能完成。

A2中的onActivityResult甚至没有被调用。

1 个答案:

答案 0 :(得分:0)

当您旋转设备时。整个活动正在重建。所以我建议你使用不同的方法。

使用一个全局类,并使用全局变量。如果要传递数据,只需将该数据分配给新的全局变量即可。让我告诉你。

Public static String data = "";

from your Activity A1 
Global.data = "your data";

当您想要使用该数据时

Global.data

我希望我能得到你的观点