我正在尝试创建一个包含两个活动的应用程序:MainActivity和SubActivity。
将通过调用startActivityForResult()从MainActivity创建SubActivity。
当我点击在SubActivity中结算的按钮时,它应该会自动完成并转到MainActivity。但我在完成SubActivity时遇到了问题。在调用SubActivity.onPause()之后,将立即调用SubActivity.onCreate(),并重新创建SubActivity。
我只想关闭SubActivity并显示MainActivity,但为什么会发生这种情况?
我搜索了同样的问题,发现轮换会使系统调用onCreate()。但在我的例子中,屏幕方向固定为纵向。
有没有人能给我一个解决这个问题的主意?
编辑:我解决了这个问题。MainActivity中存在错误的逻辑。
当变量包含特定值时,将从MainActivity创建SubActivity。反映变量值的display update方法在代码中被调用了两次。这使得我的应用程序在finish()之后重新创建了SubActvity。
MainActivity请求创建Subactivity两次,但由于我的应用程序被设置为android:launchMode="singleTop",因此只有在第一个SubActivity完成后才能创建第二个app。非常感谢你给我的建议!
发布于 2019-02-04 18:33:08
您可以使用或首先检查的行为,
1)finishAffinity();
2)finishActivityFromChild();
希望它能起作用。
否则,为了更好地沟通,在这里放几行代码,这样我们就会正确地理解并给你一些指导。
发布于 2019-02-04 19:14:52
在我的例子中,我调用了下面的函数。
btn.setOnClickListener {
setResult(result)
finishActivity(REQUEST_CODE)
finish()
}发布于 2019-02-05 14:55:23
正如你所描述的,我给你举了个例子。在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
}
}
}https://stackoverflow.com/questions/54513014
复制相似问题