android从非UI或非活动类显示警告对话框

时间:2013-02-14 06:50:07

标签: java android android-dialog

嗨Android程序员,

此问题是先前提出的。但没有答案。所以我需要解决方案。实际上我正在尝试显示来自Mainactivity.java(非活动)的test.java来电的提示框。

如果它们没有UI编码,那就好了。如果该代码依赖于UI意味着它的抛出错误。

活动类:

public class Mainactivity extends Activity
{
    public void message()
    {
        Log.i("Success : Call from non-UI & non activity class");//Upto this line working if i called message() function from other non-activity class
        DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener()
        {
        public void onClick(DialogInterface dialog, int which)
        {
             switch (which)
             {
                //Code
            }
         }
     };
     AlertDialog.Builder builder = new AlertDialog.Builder(this);
     builder.setTitle("FMS Status Message :- ");
     builder.setMessage(msg)
     .setPositiveButton("OK",dialogClickListener).show();

    }
}

非活动课程:

public class test extends BroadcastReceiver
{
    Mainactvity in = new Mainactvity();   

    @Override   
    public void onReceive(Context context, Intent intent)
    {
       in.message();
    }
}

如果解决了,我的项目主要目标就会完成。请你们中的任何人帮助我。

提前致谢。

2 个答案:

答案 0 :(得分:3)

首先,Android的糟糕编程实践,

Mainactvity in = new Mainactvity();   

您无法创建Activity类的构造函数。

第二,您正试图在BroadcastReceiver中显示Dialog中没有引用Activity的UI元素。使用活动的上下文(如果它涉及UI)或应用程序在BroadcastReceiver中显示Dialog。

答案 1 :(得分:0)

创建一个Constructor,您可以在其中获取活动。像这样 -

Activity activity;
public test (Activity activity){
         this.activity = activity;
}

现在,使用此activity作为参数 -

AlertDialog.Builder adb=new AlertDialog.Builder(activity);

因为只能使用context来显示对话框。您需要为此提供Activity

我回答了一个here