Bundle始终为null

时间:2016-02-01 17:10:31

标签: java android

我已创建自定义通知。在这个通知中,我有一个按钮。我的问题是,当我点击按钮时,我似乎无法将任何额外的内容传递给新类。

这是我在按钮上使用的代码:

// notification button
Intent switchIntent = new Intent(context, SecondClass.class);
switchIntent.putExtra("passThis", passThisValue);
PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(context, 0, switchIntent, 0);
contentView.setOnClickPendingIntent(R.id.button, pendingSwitchIntent);

我想要额外的课程:

public class SecondClass extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
     Bundle extras = intent.getExtras();
     String id = extras.getString("passThis"); } }

Bundle总是空的。我只发布了我认为问题所在的部分代码,如果你需要完整的代码,我会编辑我的帖子。

我这样做不正确吗?我应该如何将值传递给通知按钮事件中的类?

4 个答案:

答案 0 :(得分:1)

试试此代码

Bundle bundle = new Bundle();
bundle.putString("passThis", passThisValue);
switchIntent.putExtras(bundle);

答案 1 :(得分:1)

上面的代码没有将数据作为bundle传递它只是作为意图额外....你必须调用

getIntent().getStringExtra("YOURKEY");

答案 2 :(得分:0)

如果你想从通知中获取传递的Bundle将onNewIntent覆盖到你的活动,就像下面的代码一样。希望这有帮助。

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    Bundle extras = intent.getExtras();
    if(extras!=null) {
        String id = extras.getString("passThis");
    }
}

答案 3 :(得分:0)

我为我的一个邻居做了一个关于这个的教程,以防你想要查看它。这是link