首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当按回按钮时,如何将数据从第二个活动传递到第一个活动?- android

当按回按钮时,如何将数据从第二个活动传递到第一个活动?- android
EN

Stack Overflow用户
提问于 2013-01-12 18:24:19
回答 10查看 142.4K关注 0票数 198

我有两个活动,Activity1Activity2

Activity1中,我有一个按钮TextView。单击该按钮时,将启动Activity2

Activity2中,我有一个EditText

当从Activity2 2按back时,我要显示从Activity2 Activity2中的TextView in Activity1中检索到的数据。

有没有人能帮我编写代码,让它正常工作?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2013-01-12 18:32:09

使用startActivityForResult启动Activity2,并使用setResult方法将数据从Activity2发送回Activity1。在Activity1中,您需要覆盖onActivityResult,以便使用Activity2中的EditText数据更新TextView

例如:

Activity1中,以以下方式启动Activity2:

代码语言:javascript
复制
Intent i = new Intent(this, Activity2.class);
startActivityForResult(i, 1);

Activity2中,使用setResult发回数据:

代码语言:javascript
复制
Intent intent = new Intent();
intent.putExtra("editTextValue", "value_here")
setResult(RESULT_OK, intent);        
finish();

Activity1中,使用onActivityResult接收数据

代码语言:javascript
复制
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在活动之间共享数据。

票数 360
EN

Stack Overflow用户

发布于 2013-01-12 18:30:52

Activity1应使用startActivityForResult()启动Activity2

Activity2应使用setResult()将数据发送回Activity1

Activity2中,

代码语言:javascript
复制
@Override
public void onBackPressed() {
    String data = mEditText.getText();
    Intent intent = new Intent();
    intent.putExtra("MyData", data);
    setResult(resultcode, intent);
}

Activity1中,

代码语言:javascript
复制
onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 1) {
        if(resultCode == RESULT_OK) {
            String myStr=data.getStringExtra("MyData");
            mTextView.setText(myStr);
        }
    }
}
票数 28
EN

Stack Overflow用户

发布于 2015-11-05 11:19:55

当我将setResult放在onBackPressed中时,其他答案都不起作用。注释调用超级onBackPressed并手动调用finish解决了这个问题:

代码语言:javascript
复制
@Override
public void onBackPressed() {
    //super.onBackPressed();
    Intent i = new Intent();
    i.putExtra(EXTRA_NON_DOWNLOADED_PAGES, notDownloaded);
    setResult(RESULT_OK, i);
    finish();
}

在第一个活动中:

代码语言:javascript
复制
@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;
        }
    }
}
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14292398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档