我通过意图传递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。 已经尝试了很多搜索了很多一天。这可能是什么共鸣?
答案 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");