2011-07-11 197 views
1

在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); 
} 
+0

为什么你有名为startActivityForResult的方法? – Gregory

+0

[**请参阅此博客。这可以帮助你**](http://startandroiddevelopment.blogspot.in/2013/11/how-to-pass-boolean-int-string-integer.html) – 2013-11-04 04:50:58

回答

0

保存活性1状态在方法onSaveInstanceState中,然后在方法

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"); 
    } 
+0

当我回到第一个活动,应用程序关闭。我更新了我的问题(使用代码)。我不知道如何解决这个问题......顺便说一句,这个应用程序还有其他的活动。我不确定,但也许其他意图影响它?我很迷茫。哈哈。 – oopsiee

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一个更完整的描述(节启动活动,并得到结果)。

相关问题