Java 我应该如何检查internet连接并显示“a”;“重试”;及;取消“;对话

Java 我应该如何检查internet连接并显示“a”;“重试”;及;取消“;对话,java,android,Java,Android,我想检查internet连接,如果可用,请调用getData(),但如果不可用,则显示一个带有重试和取消选项的对话框 如果单击了重试,请检查internet连接;如果可用,则调用getData,但如果不可用,则再次显示对话框(类似于循环) 或者,如果单击了取消,则完全退出应用程序 我正在使用此类检查网络可用性和internet连接: public class NetworkCheck { public static boolean isAvailableAndConnected(Con

我想检查internet连接,如果可用,请调用
getData()
,但如果不可用,则显示一个带有重试取消选项的对话框

如果单击了重试,请检查internet连接;如果可用,则调用
getData
,但如果不可用,则再次显示对话框(类似于循环)

或者,如果单击了取消,则完全退出应用程序

我正在使用此类检查网络可用性和internet连接:

public class NetworkCheck {

    public static boolean isAvailableAndConnected(Context context) {
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        boolean isNetworkAvailable = cm.getActiveNetworkInfo() != null;
        boolean isNetWorkConnected = isNetworkAvailable && cm.getActiveNetworkInfo().isConnected();

        return isNetWorkConnected;

    }

}
在主要活动中,我会这样做:

if (NetworkCheck.isAvailableAndConnected(this)) {
            //Caling method to get data
            getData();
        } else {
            final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
            alertDialogBuilder.setTitle("No Internet Connection");
            alertDialogBuilder.setMessage("Failed to load. Please ensure ypu're connected to the internet and try again");
            alertDialogBuilder.setPositiveButton("Retry", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    if (!NetworkCheck.isAvailableAndConnected(context)) {
                        alertDialogBuilder.show();
                    } else {
                        getData();
                    }


                }
            });
            alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    finish();

                }
            });
            alertDialogBuilder.show();

        }
从以上代码中,我有三个问题:

  • 如果(!NetworkCheck.isavailable and connected(context)){/code>上下文以红色突出显示,当我将其悬停时,我看到无法解析符号“context”。如果我将该方法留空或键入
    this
    getActivity
    ,Android Studio会抱怨。哪个参数显示我通过了该方法
  • 调用
    finish()
  • 我还做错了什么
  • 1) 如果不使用片段,可以在上下文的位置上执行类似的解决方法(首先声明):

    然后将上下文替换为mContext


    2) 终止活动不是一项建议(您可能已经阅读了有关活动生命周期的内容),但您可以尝试
    android.os.Process.killProcess(android.os.Process.myPid());

    在MainActivity中我应该在哪里声明
    final Context mContext;mContext=this;
    请?}其他{final Context mContext;mContext=this;final AlertDialog.Builder alertDialogBuilder=new AlertDialog.Builder(this);我做了那个,还有这个:
    if(!NetworkCheck.isAvailableAndConnected(mContext()){
    mContext
    用红色下划线标出了info方法调用expectedExcuse me,但它正在指责所需的方法调用,因为您没有编写mContext,而是编写了mContext()取而代之的是,在结尾用括号表示,这是一个方法的符号,而这不是一个方法,因此引起了错误。谢谢法拉第。最好。感谢“某人”的否决票!上帝保佑。
            final Context mContext;
            mContext = this;