这个问题在这里已有答案:
我有一个包含三个活动的项目(MainActivity,PlayerActivity和ListActivity)。我想将MainActivity
的意图发送到PlayerActivity
并在PlayerActivity
中选择一个名字并再次传递给MainActivity.
我写了另一个意图,从ListActivity
向Mainactivity
发送一些数据。
MainActivity
到ListActivity
工作完美,也是MainActivity
to PlayerActivity.
但是当PlayerActivity
send意图到MainActivity
时,我得到了一个零意图。
这是我的代码:
从ListActivity发送:
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
int buttonId = bundle.getInt("buttonID");
String name = parent.getItemAtPosition(position).toString();
Intent sendIntentToMainActivity = new Intent(PlayersActivity.this, MainActivity.class);
Bundle bundle1 = new Bundle();
bundle1.putString("name", name);
bundle1.putInt("buttonId", buttonId);
startActivity(sendIntentToMainActivity);
}
});
进入MainActivity:
@Override
protected void onNewIntent(Intent intent) {
if (intent != null) {
setIntent(intent);
Log.d("xxx", "Intent is null");
}
}
@Override
protected void onResume() {
super.onResume();
Intent intent = getIntent();
Bundle bundle = new Bundle();
int id = bundle.getInt("buttonID");
String name = bundle.getString("name");
if (id == mButton_first_group_frist_name.getId()) {
mButton_first_group_frist_name.setText(name);
} else if (id == mButton_first_group_second_name.getId()) {
mButton_first_group_second_name.setText(name);
} else if (id == mButton_second_group_frist_name.getId()) {
mButton_second_group_frist_name.setText(name);
} else if (id == mButton_second_group_second_name.getId()) {
mButton_second_group_second_name.setText(name);
}
}
请帮忙并给出建议
您必须将bundle添加到创建的intent中,当返回onResume时,从intent获取bundle。你可以这样做:
Intent sendIntentToMainActivity = new Intent(PlayersActivity.this, MainActivity.class);
Bundle bundle1 = new Bundle();
bundle1.putString("name", name);
bundle1.putInt("buttonId", buttonId);
sendIntentToMainActivity.putExtra("bundle",bundle1);
startActivity(sendIntentToMainActivity);
然后在onResume
内:
Intent intent = getIntent();
Bundle bundle = intent.getBundleExtra("bundle");