1

我创建了两个活动(ActivityAActivityB),我想在它们之间切换,即:

  • 当用户单击中的按钮时ActivityA,我会转到ActivityB
  • 在 中ActivityB,用户插入一条消息,然后按下一个按钮,他转到ActivityA

但是,我无法检索来自ActivityB.

我在下面描述我的代码。

需要ActivityB开始(从ActivityAActivityB

Intent intent = new Intent(this, ActivityB.class);
startActivity(intent);

需要ActivityA开始(从ActivityBActivityA

Intent intent = new Intent(this, ActivityA.class);
String message = "some text";
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);

问题

我应该将处理意图的代码放在哪里ActivityA,如下所示?

Intent intent = getIntent();
String message = intent.getStringExtra(ActivityB.EXTRA_MESSAGE);

我无法在onResume()andonRestart()方法中检索它,因此我显然在处理活动生命周期时遗漏了一些东西。

而且,每次我回调ActivityA,它都会回调onCreate()方法,这意味着每次都销毁活动,这不是我想要的。

提前致谢。

4

2 回答 2

1

使用以下代码从 ActivityA 调用 ActivityB。

   Intent intent = new Intent(this, ActivityB.class);
    startActivityForResult(intent,0); // '0' is requestcode

当用户使用以下代码输入从 ActivityB 返回的消息时。

 Intent intent = new Intent();
    Bundle b = new Bundle();
    b.putString("messagekey",your_message);
    intent.putExtras(b);
    setResult(1,intent); // here '1' is resultcode
    finish();

并覆盖 ActivityA 中的 OnActivityResult 方法,如下所示

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0 && resultCode == 1)
{
if (data != null) {
if (data.getStringExtra("messagekey") != null) {
String message_from_activityB = data.getStringExtra("messagekey");
}
}
}
}
于 2013-08-16T10:34:30.677 回答
0

你必须使用 startActivityForResult 而不是简单的 StartActivity

像这样的东西

 Intent intent = new Intent(this, ActivityB.class);
  startActivityForResult(intent,1);

在 ActivityB 中只是这样做不要使用 StartIntent 调用 ActivityA

 Intent intent = getIntent();
 String message = "some text";
 intent.putExtra("EXTRA_MESSAGE", message);
 setResult(RESULT_OK,intent);
 finish();

 in ActivityA override the

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if(data.getExtras().containsKey("EXTRA_MESSAGE"))
      {
        // now you can access those data of ActivtyB
      }
于 2013-08-16T10:31:12.997 回答