将数据从一个活动传递到另一个活

时间:2011-07-11 16:24:07

标签: android android-activity android-intent

在Activity1中,我输入了一些数据,如名称和地址。当我单击下一个按钮时,将会有另一个输入表单。我想要做的是,当我点击BACK时,我将返回到Activity1并显示我之前输入的数据。

请帮助:)

=============

更新:活动1

private void startActivityForResult()
    {
        TextView textname = (TextView) findViewById(R.id.username);
        TextView textaddress = (TextView) findViewById(R.id.useraddress);

        Intent intent = new Intent(this, GetInformation.class);
        //intent.putExtras(getIntent());

        intent.putExtra("username", textname.getText().toString());
        intent.putExtra("useradd", textaddress.getText().toString());
        startActivityForResult(intent, 0);
    }

    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        TextView textname = (TextView) findViewById(R.id.username);
        TextView textaddress = (TextView) findViewById(R.id.useraddress);
        textname.setText(data.getStringExtra("returnname").toString());
        textaddress.setText(data.getStringExtra("returnadd").toString());
    }

活性2

private void startActivityForResult()
{
    final String username;
    final String useraddress;
    Intent intent = getIntent();

    //intent.putExtras(getIntent());

    username = getIntent().getStringExtra("username");
    useraddress = getIntent().getStringExtra("useradd");

    intent.putExtra("returnname", username);
    intent.putExtra("returnadd", useraddress);

    setResult(0, intent);
}

2 个答案:

答案 0 :(得分:3)

在Android中有一种简单的方法:startActivityForResult。基本上,当您启动活动时,您说您期望得到一个结果。然后,其他活动可以添加将返回到起始活动的信息。以下是来自官方文档的非常简单的代码示例:

 public class MyActivity extends Activity {
     ...

     static final int PICK_CONTACT_REQUEST = 0;

     protected boolean onKeyDown(int keyCode, KeyEvent event) {
         if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
             // When the user center presses, let them pick a contact.
             startActivityForResult(
                 new Intent(Intent.ACTION_PICK,
                 new Uri("content://contacts")),
                 PICK_CONTACT_REQUEST);
            return true;
         }
         return false;
     }

     protected void onActivityResult(int requestCode, int resultCode,
             Intent data) {
         if (requestCode == PICK_CONTACT_REQUEST) {
             if (resultCode == RESULT_OK) {
                 // A contact was picked.  Here we will just display it
                 // to the user.
                 startActivity(new Intent(Intent.ACTION_VIEW, data));
             }
         }
     }
 }

您可以在Activity page in the official doc(“开始活动”和“获得结果”部分)上获得有关所有这些内容的更完整描述。

答案 1 :(得分:0)

在方法onSaveInstanceState中保存Activity1状态,然后在方法

中保存
void onCreate(Bundle savedInstanceState)

您可以使用savedInstanceState恢复状态。

或者,如果您希望将输入的数据传递给第二个活动,则可以将数据置于意图中。 样品:

Intent i = new Intent(FirstActivity.this, SecondActivity.class);
i.putExtra("Key", "Value");
startActivityForResult(i, 0);

在第二个活动中,您可以获得数据:

 getIntent().getStringExtra("Key");

返回第二项活动的结果:

Intent data = new Intent();
data.put("key", "value");
setResult(RESULT_OK, data);   

然后您可以使用

检索第一个活动中的数据
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        data.getStringExtra("key");
    }