我创建了两个活动(ActivityA
和ActivityB
),我想在它们之间切换,即:
ActivityA
中的按钮时,我会转到ActivityB
ActivityB
中,用户插入了一条消息,然后按下按钮,他转到ActivityA
但是,我无法检索从ActivityB
到达的邮件。
我在下面描述了我的代码。
要求ActivityB
开始(从ActivityA
到ActivityB
)
Intent intent = new Intent(this, ActivityB.class);
startActivity(intent);
要求ActivityA
开始(从ActivityB
到ActivityA
)
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()
和onRestart()
方法中检索它,因此我在处理活动生命周期时显然遗漏了一些内容。
此外,每次我回调ActivityA
时,它都会回调onCreate()
方法,这意味着每次都会销毁活动,这不是我想要的。
提前致谢。
答案 0 :(得分: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");
}
}
}
}
答案 1 :(得分: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
}