Java Android:在旋转后对活动调用finish()将重新启动活动
我有一个Android studio项目,包括3个活动,A1、A2和A3 A1启动A2,A2可以启动A3或返回A1。在A3中,您可以通过按两个不同的按钮返回A2或将一些更新的信息返回A1 我将数据从A3返回A1的想法是通过A2传递数据,然后在A2的onActivityResult方法中调用A2上的finish()。虽然我不知道这是最好的方法,但它似乎有效 现在,如果我不旋转设备,就不会有任何问题,信息会从A3返回A1。如果我旋转它一次,然后按任意一个按钮,它就会重新启动活动A3,我不知道为什么。将其旋转一次,然后再旋转回来也可以按预期工作 下面是一些代码片段 从A2开始A3Java Android:在旋转后对活动调用finish()将重新启动活动,java,android,Java,Android,我有一个Android studio项目,包括3个活动,A1、A2和A3 A1启动A2,A2可以启动A3或返回A1。在A3中,您可以通过按两个不同的按钮返回A2或将一些更新的信息返回A1 我将数据从A3返回A1的想法是通过A2传递数据,然后在A2的onActivityResult方法中调用A2上的finish()。虽然我不知道这是最好的方法,但它似乎有效 现在,如果我不旋转设备,就不会有任何问题,信息会从A3返回A1。如果我旋转它一次,然后按任意一个按钮,它就会重新启动活动A3,我不知道为什么。
infoIntent.setClass(this, A3.class);
if(infoSet)
{
infoIntent.putExtra("tvName", name);
infoIntent.putExtra("tvMemory", memory);
infoIntent.putExtra("tvLaptop", laptop);
}
startActivityForResult(infoIntent, REQUEST_CODE_EDIT);
设置A3中的按钮侦听器
btnOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
returnAndUpdateInfo(view);
}
});
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setResult(RESULT_CANCELED, infoIntent);
finish();
}
});
我一辈子都搞不明白为什么只有当屏幕旋转一次时,A3才会结束
A2中的onActivityResult甚至不会被调用。当您旋转设备时。整个活动正在重新创建。所以我建议你使用不同的方法 使用一个全局类,并在该类中使用全局变量。当您想要传递数据时,只需将该数据分配给新的全局变量。让我给你看看
Public static String data = "";
from your Activity A1
Global.data = "your data";
当您想使用该数据时,请使用
Global.data
我希望我能理解你的观点使用片段简化你的生活。是的,你是对的,这是一个要求我们使用活动的练习。虽然我理解你对数据传递的解决方案,但这并不是我想要解决的问题。事实上,当我调用finish()时,旋转设备一次会导致它重新启动。不将其旋转或旋转回其原始方向不会导致此问题。