2017-07-20 4 views
0

setLuminLevels()setHumidLevels()setTempLevels()がtrueを返すと、ユーザーに通知を表示するプロジェクトを作成しています。なぜNotification.Builderを複数回使用するとアプリケーションがクラッシュするのですか?

これが私のメイン

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     NotificationCompat.Builder lumin = 
       new NotificationCompat.Builder(this) 
         .setSmallIcon(R.drawable.index) 
         .setContentTitle("Greenhouse Warning:") 
         .setContentText("Luminosity Out of range!"); 

     NotificationCompat.Builder humid = 
       new NotificationCompat.Builder(this) 
         .setSmallIcon(R.drawable.index) 
         .setContentTitle("Greenhouse Warning:") 
         .setContentText("Humidity Out of range!"); 

     NotificationCompat.Builder temp = 
       new NotificationCompat.Builder(this) 
         .setSmallIcon(R.drawable.index) 
         .setContentTitle("Greenhouse Warning:") 
         .setContentText("Temperature Out of range!"); 

     int mNotificationId1 = 001; 
     int mNotificationId2 = 002; 
     int mNotificationId3 = 003; 

     NotificationManager mNotifyMgr1 = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
     NotificationManager mNotifyMgr2 = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
     NotificationManager mNotifyMgr3 = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 

     //set and check the displayed levels 
     if(setLuminLevels()) mNotifyMgr1.notify(mNotificationId1, lumin.build()); 
     if(setHumidLevels()) mNotifyMgr2.notify(mNotificationId2, humid.build()); 
     if(setTempLevels()) mNotifyMgr3.notify(mNotificationId3, temp.build()); 
    } 

なぜ、このコードは私のアプリをクラッシュしていましたでしょうか?複数の通知を使用するにはどうすればよいですか?

クラッシュレポート:

            --------- beginning of crash 
07-20 14:23:57.136 2645-2645/com.joanjantz_lee.greenhouse E/AndroidRuntime: FATAL EXCEPTION: main 
                      Process: com.joanjantz_lee.greenhouse, PID: 2645 
                      java.lang.NumberFormatException: For input string: "26.57" 
                       at java.lang.Integer.parseInt(Integer.java:521) 
                       at java.lang.Integer.parseInt(Integer.java:556) 
                       at com.joanjantz_lee.greenhouse.MainActivity$3.onDataChange(MainActivity.java:206) 
                       at com.google.android.gms.internal.zzbmz.zza(Unknown Source) 
                       at com.google.android.gms.internal.zzbnz.zzYj(Unknown Source) 
                       at com.google.android.gms.internal.zzboc$1.run(Unknown Source) 
                       at android.os.Handler.handleCallback(Handler.java:751) 
                       at android.os.Handler.dispatchMessage(Handler.java:95) 
                       at android.os.Looper.loop(Looper.java:154) 
                       at android.app.ActivityThread.main(ActivityThread.java:6119) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
+1

そのクラッシュについてのログがありますか?ちなみに、私は、mNotifyMgr1、mNotifyMgr2、mNotifyMgr3は同じインスタンスなので、あなたはその多くの変数を必要としません。 – egoldx

+0

@ user1779222私は1つも持っていませんが、私はあなたに通知しておきます。 –

+0

@ user1779222それは私が思ったものですが、どうすれば新しいインスタンスとして通知を生成できますか? **新しい**がそのようなことを世話したと思った –

答えて

1

があなたのログからこれらの行を考えてみましょう:

java.lang.NumberFormatException: For input string: "26.57" 
at java.lang.Integer.parseInt(Integer.java:521)                     
at java.lang.Integer.parseInt(Integer.java:556)                     
at com.joanjantz_lee.greenhouse.MainActivity$3.onDataChange(MainActivity.java:206) 

あなたが呼び出されているOnDataChangeのイベントのリスナーを持っている、とに文字列を解析しようとしています整数。文字列には有効な整数ではない "26.57"が含まれています。あなたのMainActivity.javaのライン206で

ルックは

PS:user1779222は正しいです。 NotificationManagerはシングルトンなので、参照は1つだけ必要です。

+0

ありがとう、私は今他の問題に遭遇しますが、ありがとう –

関連する問題