2015-11-19 60 views
0

我试图通过alarmmanger传递两个整数,但是每当我将它们传递给toast时,都会返回null。我无法理解问题出在哪里。使用报警管理器将int传递给BroadcastReceiver类

Intent intent = new Intent(MainActivity.this, AlarmReceiver.class); 

     intent.putExtra("passedHour", cal.get(Calendar.HOUR_OF_DAY)); 
     intent.putExtra("passedMin", cal.get(Calendar.MINUTE)); 

     PendingIntent alarmIntent = PendingIntent.getBroadcast(
       MainActivity.this, 0, intent, 0); 

     AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
     alarmMgr.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 
       alarmIntent); 

这是alaramreceiver类的onReceive

Toast.makeText(context, "Alarm!! " + intent.getStringExtra("passedHour") + ":" + intent.getStringExtra("passedMin"), Toast.LENGTH_LONG).show(); 
+0

'Calendar#get()'返回一个'int'。你试图从'Intent'作为'String'来检索它。改为使用'Intent#getIntExtra()'方法。 –

+0

使用'getIntExtra'而不是'getStringExtra'从intent获取两个键值,因为'Calendar'' get'方法的返回类型是'int'而不是'String' –

+0

是的thnxs家伙它的工作:) – Saud

回答

0

cal.get()方法的返回INT这样的意图是发送值INT
您需要使用intent.getIntExtra方法,以获得INT
所以在onReceive使用

Toast.makeText(context, "Alarm!! " + intent.getIntExtra("passedHour") + ":" + intent.getIntExtra("passedMin"), Toast.LENGTH_LONG).show(); 
+0

感谢它工作正常 – Saud

+0

然后接受答案 –

+0

不允许它....告诉我等几分钟 – Saud