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,谢谢;)现在一切正常。对我来说,那是一个严重的错误。谢谢现在一切正常。对我来说,那是一个严重的错误。谢谢