对于警报构建器中的应用程序,令牌不为空

时间:2013-01-06 08:55:10

标签: java android eclipse

我每周都会使用接收器制作警报器。但是,我在下面的代码中出现以下错误

  

无法添加窗口 - 令牌null不适用于应用程序

我正在使用的代码是

 public class AlarmReceiver extends BroadcastReceiver 
    {
         @Override
         public void onReceive(Context context, Intent intent) 
         {
           try {
                 displayAlert("Have you seen your chiropractor this month?", "Alert!", context);
                } 
           catch (Exception e) 
            {
               Toast.makeText(context, "There was an error somewhere, but we still received an alarm", Toast.LENGTH_SHORT).show();
                 e.printStackTrace();
              }
        }



         public void displayAlert(final String error, String title, final Context context)
         {
                new AlertDialog.Builder(context.getApplicationContext()).setMessage(error)  
                .setTitle(title)  
                .setCancelable(true)  
                .setNeutralButton("Continue",  
                   new DialogInterface.OnClickListener() {  
                   public void onClick(DialogInterface dialog, int whichButton){
                           dialog.cancel();
                            Intent newIntent = new Intent(context, Appointment.class);
                            context.startActivity(newIntent);
                   }  
                   })  
                .show(); 
            }
    }

4 个答案:

答案 0 :(得分:0)

问题出在getApplicationContext()

new AlertDialog.Builder(this).setMessage(error)  
            .setTitle(title)  
            .setCancelable(true)  
            .setNeutralButton("Continue",  
               new DialogInterface.OnClickListener() {  
               public void onClick(DialogInterface dialog, int whichButton){
                       dialog.cancel();
                        Intent newIntent = new Intent(context, Appointment.class);
                        context.startActivity(newIntent);
               }  
               })  
            .show(); 

取代getApplicationContext()通过ActivityName.thisgetContext()

答案 1 :(得分:0)

而不是:

context.getApplicationContext();

使用

this

再试一次,这应该有效

答案 2 :(得分:0)

我真的不认为从AlertDialog显示BroadcastReceiver是个好主意。您应该创建一个Notification,并在用户点击它时打开一些活动。

答案 3 :(得分:0)

我不想要通知,我只是做了一个便宜的把戏

我创建了一个空白活动MYExtraActivity并在Receiver中调用它

Intent newIntent = new Intent(context, MYExtraActivity .class);
                            context.startActivity(newIntent);

在这个新的活动中,我定义了一个警报和一切