Android应用程序启动时的AlertDialog

Android应用程序启动时的AlertDialog,android,Android,我试图在用户首次下载应用程序后再也不显示该对话框时使其运行 这是我的密码: Thread t = new Thread(new Runnable() { @Override public void run() { SharedPreferences getPrefs = PreferenceManager .getDefaultSharedPreferences(getBaseContext()); boolean isFirstStart = getPrefs

我试图在用户首次下载应用程序后再也不显示该对话框时使其运行

这是我的密码:

Thread t = new Thread(new Runnable() {

@Override
public void run() {
    SharedPreferences getPrefs = PreferenceManager
        .getDefaultSharedPreferences(getBaseContext());
    boolean isFirstStart = getPrefs.getBoolean("key", true);

    if (isFirstStart) {
        //Line 39 is next
        new AlertDialog.Builder(MainActivity.this)
        .setTitle("Sample Title")
        .setMessage("Sample Message")
        .setNeutralButton("OK", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface arg0, int arg1) {

                }
        })
        .show();

            SharedPreferences.Editor e = getPrefs.edit();
            e.putBoolean("key", false);
            e.commit();
        }

    }
});

t.start();
此代码位于FragmentActivity内的onCreate方法中。特别是有三个滚动标签的

我收到以下运行时错误:

03-13 16:54:02.803    6759-6784/com.hidden.hidden E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-7125
    Process: com.hidden.hidden, PID: 6759
    java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
            at android.os.Handler.<init>(Handler.java:200)
            at android.os.Handler.<init>(Handler.java:114)
            at android.app.Dialog.<init>(Dialog.java:109)
            at android.app.AlertDialog.<init>(AlertDialog.java:114)
            at android.app.AlertDialog$Builder.create(AlertDialog.java:931)
            at android.app.AlertDialog$Builder.show(AlertDialog.java:950)
            at com.hidden.hidden.MainActivity$1.run(MainActivity.java:39)
            at java.lang.Thread.run(Thread.java:841)
03-13 16:54:02.803 6759-6784/com.hidden.hidden E/AndroidRuntime﹕ 致命异常:线程7125
进程:com.hidden.hidden,PID:6759
java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序
android.os.Handler.(Handler.java:200)
位于android.os.Handler.(Handler.java:114)
在android.app.Dialog.(Dialog.java:109)
在android.app.AlertDialog.(AlertDialog.java:114)
在android.app.AlertDialog$Builder.create上(AlertDialog.java:931)
在android.app.AlertDialog$Builder.show上(AlertDialog.java:950)
位于com.hidden.hidden.MainActivity$1.run(MainActivity.java:39)
运行(Thread.java:841)
注意:为了安全起见,包名是隐藏的

我哪里做错了


感谢您的帮助。

为什么要将代码放在线程内?如果将警报放在线程外,它应该可以正常运行,如果必须使用线程,请在“runOnUiThread”内显示警报对话框。

尝试将
警报对话框
放在
onCreate()
方法中,并使用:

if (isFirstStart) {
    dialog.show()
}

看起来您正试图从主线程之外更改UI。
将AlertDialog代码放在新线程对象之外,它应该会正常运行。

删除
线程
,并将此代码直接放在
onCreate()中。
您应该很好。@codeMagic-Duh,谢谢;)现在一切正常。对我来说,那是一个严重的错误。谢谢现在一切正常。对我来说,那是一个严重的错误。谢谢