[英]Android: activity will be recreated after calling finish
我正在尝试创建一个包含两个活动的应用程序: MainActivity
和SubActivity
。
通过调用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.