【问题标题】:AlertDialog Issue On Android 4.1Android 4.1 上的 AlertDialog 问题
【发布时间】:2012-09-05 06:42:57
【问题描述】:

我在使用警报对话框时遇到一些错误。我使用 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();  

}

【问题讨论】:

  • 这是在主(UI)线程上运行的吗?
  • 我在 onCreate 上运行。我添加了此代码,请检查。
  • 我解决了一个问题,感谢关注。我发布了如何解决它

标签: android android-alertdialog


【解决方案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();

【讨论】:

    【解决方案2】:

    我解决了这样的问题。

    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(); 
                        }
                    });
    

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      • 2011-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多