0

我试图在 BroadcastReceiver 的子类的方法之一中显示 AlertDialog。我的设置是

            if(telisinthedatabase == true){
                 String checkid = dbHelp.getidbySimcardnumber(tel);
                 LayoutInflater mInflater = LayoutInflater.from(thisclasscontext);
                 View statusupdateView = mInflater.inflate(R.layout.statuslayout, null);
                 TextView statustext = (TextView) statusupdateView.findViewById(R.id.statuseditText);
                 String text[] = msg.split("\n");
                 statustext.setText(text[0]+"\n"+text[1]+"\n"+text[2]+"\n"+text[3]);
                 new AlertDialog.Builder(thisclasscontext).setTitle("Current status of the tracker at: "+checkid).setView(statusupdateView)
                 .setPositiveButton("OK", new DialogInterface.OnClickListener() 
                 {                  
                   @SuppressLint("SimpleDateFormat")
                   public void onClick(DialogInterface dialog, int whichButton) 
                   {                    


                   }
                }).show();
            }

context我将实例从onReceive(Context context, Intent intent)方法复制到thisclasscontext。但是程序崩溃了。我的编码有什么问题?我在其他活动中使用了相同的编码,这很好。谢谢

4

3 回答 3

1

前面提到的一切都是正确的。但是,如果您的接收者是当前前台活动并且您引用了它的上下文,您可以引发一个 AlertDialog - 即您不需要开始一个新活动。

于 2013-05-10T16:07:05.137 回答
1

您不能直接从 BroadCastReceiver 显示警报,因为没有显示对话框的活动窗口。要显示警报,您必须在接收器中启动一个活动,并且在该活动中您可以显示一个警报。

于 2013-05-10T15:21:09.460 回答
0

您无法显示来自广播接收器的对话框。仅来自 Activity 且仅当该 Activity 位于前台时,否则您将收到异常。没有看到堆栈跟踪很难说,但这可能是你的问题。

于 2013-05-10T15:12:43.027 回答