2013-02-14 68 views
2

嗨Android程序员,android可显示来自非UI或非活动类的警报对话框

此问题先前被询问。但没有答案。所以我需要解决方案。其实我试图从test.java(非活动)显示Mainactivity.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(); 
    } 
} 

如果解决了,然后我的我的项目的主要目标将完成。请任何一个人帮助我。

在此先感谢。

+0

如果它引发错误 - 您能否发布错误? – Anukool 2013-02-14 06:53:23

+1

为什么你不考虑从你的Mainactvity传递上下文和活动到类测试。而且你显示的代码是Android的糟糕编程实践, – Sree 2013-02-14 06:55:05

回答

3

首先,针对Android不好的编程习惯,

Mainactvity in = new Mainactvity(); 

你不能让Activity类的构造函数。

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

+0

好吧,我明白了。是否有可能在测试类中显示警告框..? – DillGates 2013-02-14 06:57:56

+0

我试过这个,但它不工作:Context mContext = getApplicationContext();最终AlertDialog.Builder alert = new AlertDialog.Builder(mContext); alert.setTitle(“有消息,从:”+到); alert.setCancelable(真); alert.show();注意测试类不是一项活动。请回复我。 – DillGates 2013-02-14 07:37:54

+0

其实我需要在测试(非活动)类中显示一个警告框。而已..! – DillGates 2013-02-14 11:58:46

0

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

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

现在,用这个activity作为参数 -

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

因为不能只用context显示对话框。你需要为此提供一个Activity

我回答了一个here

+0

这不起作用。对话框不是用传递的活动创建的,也没有错误,但没有创建对话框。 – Ekta 2016-06-22 13:44:45

+0

您可能会问一个新问题并发布您的代码,以便我可以看到它。 – Darpan 2016-06-22 14:03:53

+0

我得到这个说它不工作,虽然好主意:java.lang.NullPointerException:试图调用虚拟方法'android.content.resourcesResources $ Theme android.content.Context.getTheme()'对空引用 – Jonas 2016-12-08 12:33:09

相关问题