警报对话框冻结了我的应用

时间:2017-02-21 19:48:24

标签: android alertdialog freeze

这里有检查互联网连接的代码,然后如果isconnected为false,则在allert对话框中显示一条消息。问题是如果isconnected是真的并且(我试图把if(isconnected)子句改为if(!isconnected))每个都有效。但是,当我执行show()每次冻结时,如果我在手机上放下每个网络。为什么?谢谢大家:

B=[]
for a in range(0,20):
    inner=[]
    for b in range (0, 10):
        inner.append(tmp1[a][b] / tmp2[a])
    B.append(inner)

2 个答案:

答案 0 :(得分:1)

您不需要AsyncTask来检查互联网连接,所以请保持简单。

我认为你的onClick方法看起来像这样:

@Override
public void onClick(View v) {
      if (isConnectionAvailable(context)) {
          // connected
      } else {
          // not connected
      }
};

public static boolean isConnectionAvailable(Context context) {
    ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = manager.getActiveNetworkInfo();
    return networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected();
}

不要忘记Manifest中的ACCESS_NETWORK_STATE和INTERNET权限。

答案 1 :(得分:0)

试试这个...

((Button)findViewById(R.id.listabutton)).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        if(isDeviceOnline(context)){
          //do something.
        }else{
          AlertDialog.Builder dialog= new AlertDialog.Builder(context);
          dialog.setMessage("Not connected");
          dialog.setTitle("Error!");
          dialog.setPositiveButton(.....);
          dialog.create();
          dialog.show();
        } 

    }
}


public boolean isDeviceOnline(Context context) {
    ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = manager.getActiveNetworkInfo();
    return networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected();
}

是的,在清单文件中添加ACCESS_NETWORK_STATE和INTERNET权限