【问题标题】:Show AlertDialog using try and catch使用 try 和 catch 显示 AlertDialog
【发布时间】:2018-01-24 04:38:35
【问题描述】:

我想检查我何时连接到服务器并执行此操作,我正在使用我在互联网上找到的这段代码,我不知道如何实现它,如何显示警报对话框或任何类型的警告当我没有连接时。任何帮助,将不胜感激!

代码:

public boolean isConnectedToServer(String url, int timeout) {
    try {
        URL myUrl = new URL(url);
        URLConnection connection = myUrl.openConnection();
        connection.setConnectTimeout(timeout);
        connection.connect();
        return true;
    } catch (Exception e) {
        // Handle your exceptions
        return false;
    }
}

LOGCAT:

FATAL EXCEPTION: main
                                                                                    Process: com.example.lupitagarcia.yosoyvallarta, PID: 11573
                                                                                    java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
                                                                                        at com.example.lupitagarcia.yosoyvallarta.Reportes.onMapReady(Reportes.java:195)
                                                                                        at com.google.android.gms.maps.MapView$zza$1.zza(Unknown Source)
                                                                                        at com.google.android.gms.maps.internal.zzt$zza.onTransact(Unknown Source)
                                                                                        at android.os.Binder.transact(Binder.java:387)
                                                                                        at er.b(:com.google.android.gms.DynamiteModulesB@11951434:20)
                                                                                        at com.google.android.gms.maps.internal.bf.a(:com.google.android.gms.DynamiteModulesB@11951434:5)
                                                                                        at com.google.maps.api.android.lib6.impl.bc.run(:com.google.android.gms.DynamiteModulesB@11951434:5)
                                                                                        at android.os.Handler.handleCallback(Handler.java:739)
                                                                                        at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                        at android.os.Looper.loop(Looper.java:148)
                                                                                        at android.app.ActivityThread.main(ActivityThread.java:7406)
                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

这是它使用 PHP 从数据库中检索信息的代码,也是 catlog 将我发送到的代码 代码:

       ArrayList<HashMap<String, String>> location = null;
        String url = "http://app/get.php";
        try {

            JSONArray data = new JSONArray(getHttpGet(url));
            location = new ArrayList<HashMap<String, String>>();
            HashMap<String, String> map;

            for (int i = 0; i < data.length(); i++) {
                JSONObject c = data.getJSONObject(i);
                map = new HashMap<String, String>();
                map.put("id", c.getString("id"));
                map.put("campo_latitud", c.getString("campo_latitud"));
                map.put("campo_longitud", c.getString("campo_longitud"));
                map.put("campo_categoria", c.getString("campo_categoria"));
                map.put("campo_estado", c.getString("campo_estado"));
                location.add(map);
            }
        } catch (JSONException e) {

            e.printStackTrace();
        }

        String campouno = "";
        if (!TextUtils.isEmpty(campouno)) {
            double campo_latitud = Double.parseDouble(campouno);
        }
   String campodos = "";
        if (!TextUtils.isEmpty(campodos)) {
            double campo_longitud = Double.parseDouble(campodos);
        }

            for (int i = 0; i < location.size(); i++) {
                if (!TextUtils.isEmpty(location.get(i).get("campo_latitud").toString()) && !TextUtils.isEmpty(location.get(i).get("campo_longitud").toString())) {
                    campo_latitud = Double.parseDouble(location.get(i).get("campo_latitud").toString());
                    campo_longitud = Double.parseDouble(location.get(i).get("campo_longitud").toString());
                }

【问题讨论】:

    标签: java android android-studio try-catch


    【解决方案1】:

    试试这个:

    if (isConnectedToServer("http://yourserver.com", 60)) {
       new AlertDialog.Builder(this)
          .setTitle("Connected")
          .setMessage("You are connected to server")
          .create().show();
    } else {
       new AlertDialog.Builder(this)
          .setTitle("Not Connected")
          .setMessage("You are not connected to server")
          .create().show();
    }
    

    更新:

        ArrayList<HashMap<String, String>> location = new ArrayList<HashMap<String, String>>(); //do your instance creation here to avoid nullpointer if your try-catch go to catch.
        String url = "http://app/get.php";
        try {
    
            JSONArray data = new JSONArray(getHttpGet(url));
    

    【讨论】:

    • 使用这个,它只在连接时显示消息,但应用程序在没有连接时停止
    • 你能在日志中显示你遇到了什么错误吗?
    • 您似乎在 else 语句上做了一些事情,而不是显示对话框。错误指向您的 ArrayList 为空。你能展示你的代码吗?
    • 基本上这是在应用程序上要做的第一件事,然后有一个数组,它从数据库中检索一些信息,如姓名、地址等。让我更新帖子。
    • 声明后尝试初始化数组:ArrayList&lt;Object&gt; yourArrayList = new ArrayList&lt;&gt;()
    【解决方案2】:
    boolean isConnected = isConnectedToServer("Your server", 10);
    
    if(isConnected){
                        new AlertDialog.Builder(this)
                        .setMessage("You are Successfully Connected"
                                + getString(R.string.app_name))
                        .setPositiveButton("OK",
                             new DialogInterface.OnClickListener()
                                {
                                    @Override
                                    public void onClick(DialogInterface 
                                                 dialog, int which) {
                                        dialog.dismiss();
                                    }
                                }).show();
    }
    else{
                        new AlertDialog.Builder(this)
                        .setMessage("Something Went Wrong!!"
                                + getString(R.string.app_name))
                        .setPositiveButton("OK",
                                new DialogInterface.OnClickListener()
                                {
                                    @Override
                                    public void onClick(DialogInterface 
                                                dialog, int which) {
                                        dialog.dismiss();
                                    }
                                }).show();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 2014-08-03
      • 1970-01-01
      • 2014-05-19
      • 2015-07-07
      • 2012-11-25
      • 1970-01-01
      相关资源
      最近更新 更多