【问题标题】:Common Dialog box in all Activities所有活动中的通用对话框
【发布时间】:2015-12-20 10:19:08
【问题描述】:

我想对所有活动进行网络检查,这样如果没有可用的网络,就会出现一个对话框,并且必须完成当前的活动。

为此,我创建了一个 ConnectionDetector 文件来检查连接。
在这个 java 文件中,我创建了一个对话框。
当我点击对话框按钮时,调用的Activity必须完成。

如何将当前活动作为参数发送?

我的活动

if (!ConnectionDetector.isConnectingToInternet()) {
       ConnectionDetector.noConnectionDialog(getApplicationContext(), this);
}

ConnectionDetector.java

public class ConnectionDetector {

    private Context _context;

    public ConnectionDetector(Context context) {
        this._context = context;
    }

    public static boolean isConnectingToInternet() {
        ConnectivityManager connectivity = (ConnectivityManager) AppController.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity != null) {
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
            if (info != null)
                for (int i = 0; i < info.length; i++)
                    if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                        return true;
                    }

        }
        return false;
    }

    public static void noConnectionDialog(final Context context, final Activity activity) {
        final AlertDialog.Builder dialog = new AlertDialog.Builder(context);
        dialog.setTitle("Network error");
        dialog.setMessage("There seems to be a connection problem. Please check your network connection and try again");
        dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                activity.finish();
            }
        });
        dialog.show();
    }
}

出现空指针异常,活动未完成。

【问题讨论】:

  • 您可以创建一个默认活动并从您的新活动中扩展所有活动。
  • 我接受你的回答,但我想要任何其他方式,因为它需要很多时间
  • 我看到你已经将活动作为参数传递了有什么问题?
  • 出现空指针异常

标签: android dialog android-dialog


【解决方案1】:

如果您总是要使用显示此对话框表单活动,您也可以这样做

public static void noConnectionDialog(final Context context) {
        final AlertDialog.Builder dialog = new AlertDialog.Builder(context);
        dialog.setTitle("Network error");
        dialog.setMessage("There seems to be a connection problem. Please check your network connection and try again");
        dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {                
                 dialog.dismiss();
                 ((Activity)context).finish();
            }
        });
        dialog.show();
    }

【讨论】:

    【解决方案2】:

    通过使用自定义活动,我们可以实现这一点。

    【讨论】:

      【解决方案3】:
      public static void noConnectionDialog(final Context context, String c) {
      
              Dialog dialog = new Dialog(context);
              dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
              dialog.setContentView(R.layout.nointernet);
              Window window = dialog.getWindow();
              window.setLayout(WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.WRAP_CONTENT);
      
              ImageButton close;
              close = dialog.findViewById(R.id.close);
              close.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      dialog.dismiss();
                  }
              });
      
              if (c.equals("1")) {
                  dialog.show();
              } else {
                  dialog.dismiss();
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2018-04-11
        • 1970-01-01
        • 2012-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多