我有两个活动(Activity1和Activity2)。 Activity1启动Activity2以获取一些数据。每当我回到Activity1 onCreate方法在onActivityResult()之前运行。并且所有数据都消失了。为什么onCreate方法第二次运行且数据丢失?
您可以在下面查看示例代码以查看示例方案。在这种情况下,onActivityResult方法中的var1值应为5,但其值为0.
public class MainActivity1 extends ActionBarActivity
{
TextView textView1;
Button button1;
int var1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity1);
textView1 = (TextView) findViewById(R.id.textView1);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
var1 = 5;
Intent intent = new Intent(MainActivity1.this, MainActivity2.class);
startActivityForResult(intent, 2);// Activity is started with requestCode 2
}
});
}
// Call Back method to get the Message form other Activity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 2) {
String message = data.getStringExtra("MESSAGE");
textView1.setText("value =" + var1);
}
}
}
public class MainActivity2 extends ActionBarActivity {
EditText editText1;
Button button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity2);
editText1=(EditText)findViewById(R.id.editText1);
button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
String message=editText1.getText().toString();
Intent intent=new Intent();
intent.putExtra("MESSAGE",message);
setResult(2,intent);
finish();//finishing activity
}
});
}
}
答案 0 :(得分:2)
你做错了。你在意图中保存一个字符串。
然后在onActivityResult
方法中从intent中检索String,然后将TextView的文本设置为"value =" var1
,但是你没有从Intent加载var1
。
您应该将值var1
保存在MainActivity2
中的intent中,然后使用onActivityResult
方法从intent中检索它。
答案 1 :(得分:0)
在设置>开发者选项有一个名为“不要保持活动”的设置。确保未启用此功能,或者在您开始第二个活动时活动将被销毁,并且您将在返回时重新创建第一个活动。