我有一个Android工作室项目,包括3个活动,A1,A2和A3。
A1开始A2,A2开始A3或返回A1。在A3中,您可以通过按两个不同的按钮返回A2或将一些更新的信息返回到A1。
我将数据从A3返回到A1的想法是将其传递给A2,然后在其onActivityResult方法中调用A2上的finish()。虽然我不知道这是最好的方法,但似乎有效。
现在如果我不旋转设备就没有任何问题,信息从A3返回到A1。如果我旋转一次,然后按任一按钮,它会重新启动活动A3,我无法找出原因。将其旋转一次然后再返回也可以按预期工作。
以下是一些代码段。
从A2开始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甚至没有被调用。
答案 0 :(得分:0)
当您旋转设备时。整个活动正在重建。所以我建议你使用不同的方法。
使用一个全局类,并使用全局变量。如果要传递数据,只需将该数据分配给新的全局变量即可。让我告诉你。
Public static String data = "";
from your Activity A1
Global.data = "your data";
当您想要使用该数据时
Global.data
我希望我能得到你的观点