BroadcastReciver从intent获取null值

时间:2017-10-13 00:27:10

标签: android android-intent android-broadcastreceiver

我通过意图传递brodcastreciver的价值

在我的片段中

  final Intent myIntent = new Intent(getContext(), AlarmReceiver.class);

    myIntent.putExtra("studentArray", studentNameArray );
    myIntent.putExtra("studentContactArray", studentContactNumberArray );
    myIntent.putExtra("msg", msg);
    myIntent.putExtra("stime",sheducleTime);

    // Get the alarm manager service
    alarmManager = (AlarmManager) getActivity().getSystemService(ALARM_SERVICE);

    pending_intent = PendingIntent.getBroadcast(getActivity(), 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);

在我的观察中:

studentNameArray = intent.getExtras().getStringArray("studentArray");
            studentContactArray = intent.getExtras().getStringArray("studentContactArray");
            msg = intent.getStringExtra("msg");
            sheduledTime = intent.getStringExtra("stime");

我得到两个数组值,但我在msg和sheduleTime中得到null。我已经在片段中记录了它们不是null的值,但是在brodcastreciver中重新获得了null。 已经尝试了很多搜索了很多一天。这可能是什么共鸣?

1 个答案:

答案 0 :(得分:0)

解决它的两种方法。

1.使用Bundle

intent.getExtras()返回Bundle

因此,您可以在代码中使用Bundle

尝试在Fragment中更改此内容。

 myIntent.putExtra("msg", msg);
 myIntent.putExtra("stime", sheducleTime);
 // edited here ,add bundle
 Bundle bundle = new Bundle();
 bundle.putStringArray("studentArray", studentNameArray);
 bundle.putStringArray("studentContactArray", studentContactNumberArray);
 myIntent.putExtras(bundle);

2.使用getStringArrayExtra

onrecive

中试试
Intent intent = getIntent();
studentNameArray = intent.getStringArrayExtra("studentArray");
studentContactArray = intent.getStringArrayExtra("studentContactArray");
msg = intent.getStringExtra("msg");
sheduledTime = intent.getStringExtra("stime");