为了账号安全,请及时绑定邮箱和手机立即绑定

如何在按下时将数据从第二个活动传递到第一个活动? - android

如何在按下时将数据从第二个活动传递到第一个活动? - android

弑天下 2019-07-29 16:08:48
如何在按下时将数据从第二个活动传递到第一个活动? - android我有2个活动,Activity1和Activity2。在Activity1我有一个按钮和TextView的。单击按钮时,将启动Activity2。在Activity2我的EditText中。我想显示从检索到的数据的EditText在活性2中的TextView在活性1当从压回活性2。有人可以帮助我使用代码来完成这项工作吗?
查看完整描述

3 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

使用startActivityForResult和使用setResult方法将Activity2从Activity2发送回Activity1。在Activity1中,您需要覆盖onActivityResultTextView使用EditTextActivity2中的数据进行更新。

例如:

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在活动之间共享数据。


查看完整回答
反对 回复 2019-07-29
?
慕村9548890

TA贡献1884条经验 获得超4个赞

活动1应该开始活性2startActivityForResult()

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);
        }
    }}


查看完整回答
反对 回复 2019-07-29
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

当我把其他的答案没有工作setResultonBackPressed。评论对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;
        }
    }}


查看完整回答
反对 回复 2019-07-29
  • 3 回答
  • 0 关注
  • 626 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信