2

嗨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();
    }
}

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

提前致谢。

4

2 回答 2

3

首先,Android 的不良编程习惯,

Mainactvity in = new Mainactvity();   

您不能创建 Activity 类的构造函数。

其次,您试图在没有引用 Activity 的 Dialog 中显示 UI 元素BroadcastReceiver。使用Activity 的上下文(如果它与 UI 有关)或 Application 在 BroadcastReceiver 中显示对话框。

于 2013-02-14T06:52:39.907 回答
0

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

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

现在,用这个activity作为论据——

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

因为对话框不能仅使用context. 你需要为此提供一个Activity

我在这里回答了一个

于 2014-10-15T12:25:14.303 回答