getIntent返回null - Android [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我有一个包含三个活动的项目(MainActivity,PlayerActivity和ListActivity)。我想将MainActivity的意图发送到PlayerActivity并在PlayerActivity中选择一个名字并再次传递给MainActivity.

我写了另一个意图,从ListActivityMainactivity发送一些数据。

MainActivityListActivity工作完美,也是MainActivityto PlayerActivity.但是当PlayerActivitysend意图到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);
    }
}

请帮忙并给出建议

java android
1个回答
0
投票

您必须将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");
© www.soinside.com 2019 - 2024. All rights reserved.