次のコードを実行しようとしましたが、問題が発生しています。それがなければ、コードは正常に機能します。ダイアログボックスがポップアップし、オフになっているときにWifiを有効にするようにユーザーに依頼します。
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome);
Thread timer = new Thread(){
public void run(){
try{
sleep(2000);
}catch(InterruptedException e){
e.printStackTrace();
}
finally{
showAlert();
}
}
};
timer.start();
}
}
public void showAlert() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
// set title
alertDialogBuilder.setTitle("Your Title");
// set dialog message
alertDialogBuilder
.setMessage("Click yes to exit!")
.setCancelable(false)
.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// if this button is clicked, close
// current activity
Welcome.this.finish();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// if this button is clicked, just close
// the dialog box and do nothing
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
これがログ履歴で、コメント行内の ProgressDialog コードも同じエラーをスローします!:
11:46:57.306: E/AndroidRuntime(2140): FATAL EXCEPTION: Thread-141
11:46:57.306: E/AndroidRuntime(2140): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
11:46:57.306: E/AndroidRuntime(2140): at android.os.Handler.<init>(Handler.java:197)
11:46:57.306: E/AndroidRuntime(2140): at android.os.Handler.<init>(Handler.java:111)
11:46:57.306: E/AndroidRuntime(2140): at android.app.Dialog.<init>(Dialog.java:107)
11:46:57.306: E/AndroidRuntime(2140): at android.app.AlertDialog.<init>(AlertDialog.java:114)
11:46:57.306: E/AndroidRuntime(2140): at android.app.AlertDialog$Builder.create(AlertDialog.java:931)
11:46:57.306: E/AndroidRuntime(2140): at com.example.core4voipmobiledialer.Welcome.showAlert(Welcome.java:116)
11:46:57.306: E/AndroidRuntime(2140): at com.example.core4voipmobiledialer.Welcome$1.run(Welcome.java:35)