我正在尝试创建一个包含两个活动的应用程序:MainActivity
和SubActivity
。
SubActivity
将通过调用MainActivity
从startActivityForResult()
创建。
当我点击位于SubActivity
中的按钮时,它应该自动完成并转到MainActivity
。
但是我在完成SubActivity
时遇到问题。
调用SubActivity.onPause()
之后,将立即调用SubActivity.onCreate()
,并重新创建SubActivity。
我只想关闭SubActivity并显示MainActivity
,但是为什么会发生这种情况?
我搜索了相同的问题,发现轮换更改将使系统调用onCreate()。 但就我而言,屏幕方向固定为纵向。
有人可以给我一个解决这个问题的想法吗?
编辑:
我解决了问题。
MainActivity
中的逻辑有误。
SubActivity
创建 MainActivity
。
在代码中两次调用了反映变量值的显示更新方法。
这使我的应用在SubActvity
之后重新创建了finish()
。
MainActivity
请求两次创建Subactivity
,但是由于我的应用设置为android:launchMode="singleTop"
,因此第二个SubActivity
只能在第一个完成后创建。
非常感谢给我建议!
答案 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
}
}
}