Android 4.1上的AlertDialog问题

时间:2012-09-12 09:18:14

标签: android alertdialog android-alertdialog

使用警告对话框时出错了。我用4.1果冻豆sdk。我想检查用户的互联网连接和gps是否可用。

错误行:

myAlertDialog = alertDialog.create();

我的控制功能:

public void kontrol(){

            LocationManager locManager = (LocationManager) getSystemService(LOCATION_SERVICE);  

            if (locManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){  

                if(isConn()){

                {   
                    startActivity(new Intent (MainActivity.this,GPSanasayfa.class));
                }
            }
                else{
                    AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);

                    alertDialog.setMessage("Uygulamayı kullanabilmek için internet bağlantınızın aktif olması gerekmektedir");
                    alertDialog.setPositiveButton("Tamam", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int which) {
                          System.exit(0);
                       }
                    });

                    myAlertDialog = alertDialog.create(); //I get error this line
                    myAlertDialog.show();
                }

        }

            else{
                    startActivity(new Intent (MainActivity.this,NormalAnasayfa.class)); 
            }

        }

错误日志:

09-12 09:06:28.685: E/AndroidRuntime(825): FATAL EXCEPTION: Thread-93
09-12 09:06:28.685: E/AndroidRuntime(825): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
09-12 09:06:28.685: E/AndroidRuntime(825):  at android.os.Handler.<init>(Handler.java:121)
09-12 09:06:28.685: E/AndroidRuntime(825):  at android.app.Dialog.<init>(Dialog.java:107)
09-12 09:06:28.685: E/AndroidRuntime(825):  at android.app.AlertDialog.<init>(AlertDialog.java:114)
09-12 09:06:28.685: E/AndroidRuntime(825):  at android.app.AlertDialog$Builder.create(AlertDialog.java:913)
09-12 09:06:28.685: E/AndroidRuntime(825):  at com.minor.cepcadisiv3.MainActivity.kontrol(MainActivity.java:55)
09-12 09:06:28.685: E/AndroidRuntime(825):  at com.minor.cepcadisiv3.MainActivity$2.run(MainActivity.java:78)
09-12 09:06:28.685: E/AndroidRuntime(825):  at java.lang.Thread.run(Thread.java:856)

我在onCreate中调用此函数:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        pdialog = ProgressDialog.show(MainActivity.this, "Kontrol Ediliyor...", "İnternet ve GPS erişiminiz kontrol ediliyor.",true);

        new Thread(new Runnable() {  
            public void run() { 
                try {
                    Thread.sleep(2000);
                    kontrol(); 
                    pdialog.dismiss();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                return;  
            }  
        }).start();  

}

2 个答案:

答案 0 :(得分:1)

试试这个..

AlertDialog myAlertDialog = new AlertDialog.Builder(MainActivity.this).create();
alertDialog.setMessage("Uygulamayı kullanabilmek için internet bağlantınızın aktif olması gerekmektedir");
alertDialog.setPositiveButton("Tamam", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
        System.exit(0);
    }
});

myAlertDialog.show();

答案 1 :(得分:0)

我解决了这样的问题。

public Activity activity = MainActivity.this;

这是功能代码

activity.runOnUiThread(new Runnable() {
                    public void run() {
                       AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setMessage("Uygulamayı kullanabilmek için internet bağlantınızın aktif olması gerekmektedir")
                       .setCancelable(false)
                       .setPositiveButton("Tamam", new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface dialog, int id) {
                                System.exit(0);
                           }
                       });
                AlertDialog alert = builder.create();
                alert.show(); 
                    }
                });