0

我有一个代码可以检查一些数据并在非活动类中显示警报。但是在运行应用程序时崩溃并且不显示警报对话框。我用下面的代码...

if( str.isEmpty() || strPort.isEmpty()){
        new AlertDialog.Builder(Mtx.getContext())
                    .setMessage("Please provide a valid String")
        .setTitle("HAT Alert !!!")
        .setCancelable(true)
        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton){
                return;
            }
        }).show();

Mtx.getContent() 方法的代码

public class Mtx extends Application {
public static Context context;

@Override
public void onCreate(){
   super.onCreate();
   Mtx.context = getApplicationContext();
}

public static Context getContext(){
       return Mtx.context;
}
}

日志猫中显示的错误消息

10-15 12:50:33.708: E/global(329): Deprecated Thread methods are not supported.
10-15 12:50:33.708: E/global(329): java.lang.UnsupportedOperationException
10-15 12:50:33.708: E/global(329):  at java.lang.VMThread.stop(VMThread.java:85)
10-15 12:50:33.708: E/global(329):  at java.lang.Thread.stop(Thread.java:1280)
10-15 12:50:33.708: E/global(329):  at java.lang.Thread.stop(Thread.java:1247)
10-15 12:50:33.708: E/global(329):  at mediatronix.HAT.Splash$1.run(Splash.java:36)

请纠正我

谢谢

4

4 回答 4

2

你确定,对话框是问题吗?您Splash.java文件的第 36 行是什么?因为根据堆栈跟踪,存在问题。

于 2012-10-15T07:38:10.980 回答
2

您根本无法显示AlertDialog使用应用程序的上下文。对话框应该使用其上下文附加到活动的窗口并在其生命周期内保持活动状态。因此,您只需要提供一个活动的上下文,然后您就可以显示一个对话框。

作为替代方案,我建议您在AndroidManifest.xmlActivity中使用以对话框形式显示主题。这将用于操作对话框,但实际上它将是一个活动。作为一个优势,只要您可以访问应用程序的上下文,您就可以在代码中的任何位置启动您的活动。android:theme="@android:style/Theme.Dialog"

有关更多信息,请阅读答案。

于 2012-10-15T07:43:00.437 回答
2

在 Activity 中创建 Non Activity 类时,将上下文传递给它的构造函数:

NonActivityClass nonActivityClass = new  NonActivityClass(this);

非活动构造函数:

Context mContext;
public NonActivityClass(Context context){
    mContext = context;
}

然后使用:

new AlertDialog.Builder(mContext)...在非活动类

于 2012-10-15T07:49:18.010 回答
1

我的猜测是你的上下文是空的......

您不能在开始检查数据之前将上下文发送到“检查某些数据的代码”,而不是尝试获取不存在的上下文吗?

否则,请创建一个创建警报对话框的活动,然后从您的“服务”类启动该活动。

于 2012-10-15T07:33:34.580 回答