嗨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();
}
}
如果解决了,我的项目主要目标就会完成。请你们中的任何人帮助我。
提前致谢。
答案 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