繁体   English   中英

Android:通话结束后将重新创建活动

[英]Android: activity will be recreated after calling finish

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

通过调用startActivityForResult()MainActivity创建SubActivity

当我点击SubActivity的按钮时,它应该自动完成并转到MainActivity 但是我在完成SubActivity遇到问题。 之后SubActivity.onPause()被调用, SubActivity.onCreate()将immedietly叫和子活动将被重新创建。

我只想关闭SubActivity并显示MainActivity ,但是为什么会这样呢?

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

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

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

当变量具有特定值时,将从MainActivity创建SubActivity 在代码中两次调用了反映变量值的显示更新方法。 这使我的App在finish()之后重新创建SubActvity

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

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

1) finishAffinity();

2) finishActivityFromChild();

祝它工作。

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

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

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

正如你所描述的,我给你举个例子。 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 Override 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
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM