Android:活动会在调用完成后重新创建

时间:2019-02-04 09:15:05

标签: android android-activity

我正在尝试创建一个包含两个活动的应用程序:MainActivitySubActivity

SubActivity将通过调用MainActivitystartActivityForResult()创建。

当我点击位于SubActivity中的按钮时,它应该自动完成并转到MainActivity。 但是我在完成SubActivity时遇到问题。 调用SubActivity.onPause()之后,将立即调用SubActivity.onCreate(),并重新创建SubActivity。

我只想关闭SubActivity并显示MainActivity,但是为什么会发生这种情况?

我搜索了相同的问题,发现轮换更改将使系统调用onCreate()。 但就我而言,屏幕方向固定为纵向。

有人可以给我一个解决这个问题的想法吗?

编辑: 我解决了问题。 MainActivity中的逻辑有误。

当变量具有特定值时,将从SubActivity创建

MainActivity。 在代码中两次调用了反映变量值的显示更新方法。 这使我的应用在SubActvity之后重新创建了finish()

MainActivity请求两次创建Subactivity,但是由于我的应用设置为android:launchMode="singleTop",因此第二个SubActivity只能在第一个完成后创建。 非常感谢给我建议!

3 个答案:

答案 0 :(得分:0)

您可以使用或先检查其行为,

1)finishAffinity();

2)finishActivityFromChild();

可以。

否则,为了更好地进行交流,请在此处添加一些代码行,以便我们理解适当的内容并为您提供一些指导。

答案 1 :(得分:0)

就我而言,我调用了以下函数。

btn.setOnClickListener {
    setResult(result)
    finishActivity(REQUEST_CODE)
    finish()
}

答案 2 :(得分:0)

正如您所描述的,我给您提供示例。 从MainActivity使用startActivityForResult()方法调用SubActivity

例如:

Intent intent = new Intent(this, SubActivity.class);
startActivityForResult(intent, 1);

现在在SubActivity中设置要发送回MainActivity的数据。 (下面都是示例)

以数据示例:

Intent intent = new Intent();
intent.putExtra("key",result);
setResult(Activity.RESULT_OK, returnIntent);
finish();

无数据示例:(如果您没有将数据发送到MainActivity

Intent intent = new Intent();
setResult(Activity.RESULT_CANCELED, intent);
finish();

在您的MainActivity覆盖onActivityResult()方法中检索结果。 (仅当您从SubActivity发送数据时)

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1) {
        if(resultCode == Activity.RESULT_OK){
            String data=data.getStringExtra("key");
        }
        if (resultCode == Activity.RESULT_CANCELED) {
            //Write your code if there's no result
        }
    }
}