2013-12-03 2 views
0

Я создал 3 действия В первом действии есть две кнопки, когда я нажимаю на startNotification, она начинает уведомление и отмечает начальное время. Когда мы нажимаем на уведомление, оно открывает secondActivity и отправляет отмеченные time.when я перехожу в thirdActivity оттуда, когда я перехожу ко второму действию, тогда его ошибка дает NullPointerException.fata Исключение в главном и нулевом указателе Исключение

На кнопки Click

  NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
      String MyText = "Reminder"; 
      Notification mNotification = new Notification(R.drawable.ic_launcher, MyText, System.currentTimeMillis()); 
      int iUniqueId = (int) (System.currentTimeMillis() & 0xfffffff); 
      String MyNotificationTitle = "Medicine!"; 
      String MyNotificationText = "Don't forget to take your medicine!"; 
      MyIntent = new Intent(MainActivity.this,SecondActivity.class); 
      MyIntent.putExtra("s1",System.currentTimeMillis()); 
  //PendingIntent StartIntent = PendingIntent.getActivity(getApplicationContext(),UNIQUE_INT_PER_CALL,MyIntent,0); 

      PendingIntent contentIntent = PendingIntent.getActivity(context,iUniqueId,MyIntent,0); 
      //A PendingIntent will be fired when the notification is clicked. The FLAG_CANCEL_CURRENT flag cancels the pendingintent 

      mNotification.setLatestEventInfo(getApplicationContext(), MyNotificationTitle, MyNotificationText, contentIntent); 
      mNotification.flags |= Notification.FLAG_AUTO_CANCEL; 
      notificationManager.notify(0, mNotification); 

Вторая активность

Intent i=this.getIntent(); 
    if(i!=null) 
    { 
     **data=i.getStringExtra("summar");** 
 if(data.equalsIgnoreCase("MainActivity")) 
     { 

      z=i.getExtras().getLong("s1"); 
      int minutesZ = (int) ((z /(1000*60)) % 60); 
      int minutesZ1 = (int) ((System.currentTimeMillis() /(1000*60)) % 60); 
      Log.v("SecondTime",""+minutesZ); 
      Log.v("CurrentTime",""+minutesZ1); 
       x1=i.getExtras().getLong("s1"); 
      p=System.currentTimeMillis()-x1; 
      int minutes = (int) ((p /(1000*60)) % 60); 
      text1.setText(""+minutes); 
     } 

     if(data.equalsIgnoreCase("ThirdActivity")) 
     { 
      //do something here 
      Toast.makeText(SecondActivity.this,"hiii",2000).show(); 
     } 
    } 

Третья активность

b1.setOnClickListener(new OnClickListener() { 
 @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 

      Intent i=new Intent(ThirdActivity.this,SecondActivity.class); 
      startActivity(i); 
      i.putExtra("summar","ThirdActivity"); 
     } 
    }); 
+0

Братан, пожалуйста обеспечивает ошибку LogCat. –

+0

12-03 08: 49: 50.975: E/AndroidRuntime (3922): FATAL EXCEPTION: main 12-03 08: 49: 50.975: E/AndroidRuntime (3922): вызвано: java.lang.NullPointerException 12-03 08: 49: 50.975: E/AndroidRuntime (3922): \t at com.javacodegeeks.android.androidtimerexample.SecondActivity.onCreate (SecondActivity.java:30) – Yash

+0

изменить эту две строки друг с другом: startActivity (i); i.putExtra («summary», «ThirdActivity»); –

ответ

1

В вашей третьей деятельности вы начинаете намерение, а затем положить в него дополнительные .. Вместо этого попробуйте:

Третью активность

b1.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 
     // TODO Auto-generated method stub 

     Intent i=new Intent(ThirdActivity.this,SecondActivity.class); 
     i.putExtra("summar","ThirdActivity"); 
     startActivity(i); 

    } 
}); 

А также в вашей второй активности пытается иметь дополнительную проверку (с использованием hasExtra() опции доступна в умысле) в вашем состоянии:

Intent i=this.getIntent(); 
    if(i!=null) 
    { 
     if(i.hasExtra("summar"))  //---Might be useful if the intent doesn't have that extra 
      data=i.getStringExtra("summar"); 

    if(data.equalsIgnoreCase("MainActivity")) 
    { 

     z=i.getExtras().getLong("s1"); 
     int minutesZ = (int) ((z /(1000*60)) % 60); 
     int minutesZ1 = (int) ((System.currentTimeMillis() /(1000*60)) % 60); 
     Log.v("SecondTime",""+minutesZ); 
     Log.v("CurrentTime",""+minutesZ1); 
      x1=i.getExtras().getLong("s1"); 
     p=System.currentTimeMillis()-x1; 
     int minutes = (int) ((p /(1000*60)) % 60); 
     text1.setText(""+minutes); 
    } 

    if(data.equalsIgnoreCase("ThirdActivity")) 
    { 
     //do something here 
     Toast.makeText(SecondActivity.this,"hiii",2000).show(); 
    } 
} 
+0

его работа для secondActivity fine..but теперь он дает ошибку, когда я нажимаю на notification.its дают ошибку в if (data.equalsIgnoreCase («MainActivity»)), если вы знаете, бросьте пожалуйста предлагать ту же самую ошибку. – Yash

+0

@Yash, вы не передаете лишние с тегом «данные» при уведомлении нажмите .. Так что это ошибка. – Hariharan

+0

спасибо, что у br..now работает нормально. – Yash

Смежные вопросы