2015-11-19 47 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