如何在按下时将数据从第二个活动传递到第一个活动? - android我有2个活动,Activity1和Activity2。在Activity1我有一个按钮和TextView的。单击按钮时,将启动Activity2。在Activity2我的EditText中。我想显示从检索到的数据的EditText在活性2中的TextView在活性1当从压回活性2。有人可以帮助我使用代码来完成这项工作吗?
3 回答
![?](http://img1.sycdn.imooc.com/545868550001f60202200220-100-100.jpg)
慕后森
TA贡献1802条经验 获得超5个赞
使用startActivityForResult
和使用setResult
方法将Activity2从Activity2发送回Activity1。在Activity1中,您需要覆盖onActivityResult
以TextView
使用EditText
Activity2中的数据进行更新。
例如:
在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在活动之间共享数据。
![?](http://img1.sycdn.imooc.com/54584cfb0001308402200220-100-100.jpg)
慕村9548890
TA贡献1884条经验 获得超4个赞
活动1应该开始活性2用startActivityForResult()
。
Activity2应该用于setResult()
将数据发送回Activity1。
在Activity2中,
@Overridepublic 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); } }}
![?](http://img1.sycdn.imooc.com/5333a0780001a6e702200220-100-100.jpg)
蝴蝶不菲
TA贡献1810条经验 获得超4个赞
当我把其他的答案没有工作setResult
在onBackPressed
。评论对super的onBackPressed
调用和finish
手动调用可以解决问题:
@Overridepublic void onBackPressed() { //super.onBackPressed(); Intent i = new Intent(); i.putExtra(EXTRA_NON_DOWNLOADED_PAGES, notDownloaded); setResult(RESULT_OK, i); finish();}
在第一项活动中:
@Overrideprotected 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; } }}
- 3 回答
- 0 关注
- 626 浏览
添加回答
举报
0/150
提交
取消