0

我每周都使用接收器制作一个警报框。但是我在下面的代码中遇到以下错误

无法添加窗口 - 令牌 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

4 回答 4

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()

于 2013-01-06T09:01:11.953 回答
0

而不是这个:

context.getApplicationContext();

采用

this

再试一次,这应该可以

于 2013-01-06T09:01:53.377 回答
0

我真的不认为展示AlertDialog你的BroadcastReceiver. Notification当用户单击它时,您应该创建一个并打开一些活动。

于 2013-01-06T09:11:27.500 回答
0

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

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

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

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

于 2013-01-06T09:49:42.217 回答