我有两个活动,Activity1和Activity2。
在Activity1
中,我有一个按钮和TextView。单击该按钮时,将启动Activity2。
在Activity2
中,我有一个EditText。
当从Activity2 2按back时,我要显示从Activity2 Activity2中的TextView in Activity1中检索到的数据。
有没有人能帮我编写代码,让它正常工作?
发布于 2013-01-12 18:32:09
使用startActivityForResult
启动Activity2,并使用setResult
方法将数据从Activity2发送回Activity1。在Activity1中,您需要覆盖onActivityResult
,以便使用Activity2中的EditText
数据更新TextView
。
例如:
在Activity1中,以以下方式启动Activity2:
Intent i = new Intent(this, Activity2.class);
startActivityForResult(i, 1);
在Activity2中,使用setResult
发回数据:
Intent intent = new Intent();
intent.putExtra("editTextValue", "value_here")
setResult(RESULT_OK, intent);
finish();
在Activity1中,使用onActivityResult
接收数据
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if(resultCode == RESULT_OK) {
String strEditText = data.getStringExtra("editTextValue");
}
}
}
如果可以,还可以使用SharedPreferences在活动之间共享数据。
发布于 2013-01-12 18:30:52
Activity1应使用startActivityForResult()
启动Activity2。
Activity2应使用setResult()
将数据发送回Activity1。
在Activity2中,
@Override
public void onBackPressed() {
String data = mEditText.getText();
Intent intent = new Intent();
intent.putExtra("MyData", data);
setResult(resultcode, intent);
}
在Activity1中,
onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK) {
String myStr=data.getStringExtra("MyData");
mTextView.setText(myStr);
}
}
}
发布于 2015-11-05 11:19:55
当我将setResult
放在onBackPressed
中时,其他答案都不起作用。注释调用超级onBackPressed
并手动调用finish
解决了这个问题:
@Override
public void onBackPressed() {
//super.onBackPressed();
Intent i = new Intent();
i.putExtra(EXTRA_NON_DOWNLOADED_PAGES, notDownloaded);
setResult(RESULT_OK, i);
finish();
}
在第一个活动中:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == QUEUE_MSG) {
if (resultCode == RESULT_OK) {
Serializable tmp = data.getSerializableExtra(MainActivity.EXTRA_NON_DOWNLOADED_PAGES);
if (tmp != null)
serializable = tmp;
}
}
}
https://stackoverflow.com/questions/14292398
复制相似问题