Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 添加带有重试按钮的警报对话框_Android - Fatal编程技术网

Android 添加带有重试按钮的警报对话框

Android 添加带有重试按钮的警报对话框,android,Android,我正在做一个项目,如果手机上没有互联网连接,就会出现一个警报对话框。 此警报对话框表示网络不可用,并有一个按钮“重试”,用户可在其中重试internet连接测试 如何正确执行此按钮?是否有“goto”语句,以便在没有internet连接时可以重复?我尝试了标签上的“中断”并继续,但它不起作用 这是我的代码: if(isNetworkAvailable()) { GetBlogPostsTask getBlogPostsTask = new GetBlogPostsTask

我正在做一个项目,如果手机上没有互联网连接,就会出现一个警报对话框。 此警报对话框表示网络不可用,并有一个按钮“重试”,用户可在其中重试internet连接测试

如何正确执行此按钮?是否有“goto”语句,以便在没有internet连接时可以重复?我尝试了标签上的“中断”并继续,但它不起作用

这是我的代码:

if(isNetworkAvailable())
    {
        GetBlogPostsTask getBlogPostsTask = new GetBlogPostsTask();
        getBlogPostsTask.execute();
    }
    else
        {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("ERROR !!");
            builder.setMessage("Sorry there was an error getting data from the Internet.\nNetwork Unavailable!");
;
            builder.setPositiveButton("Retry", new DialogInterface.OnClickListener()
            {
                @Override
                public void onClick(DialogInterface dialog, int which)
                {

                }
            });
            AlertDialog dialog = builder.create();
            dialog.show();
            Toast.makeText(this, "Network Unavailable!", Toast.LENGTH_LONG).show();
        }

这只是一个示例,您应该将AlertDialog实现为全局变量,以避免每次尝试发出请求时都创建AlertDialog

public void runTask () {
    if(isNetworkAvailable())
    {
        GetBlogPostsTask getBlogPostsTask = new GetBlogPostsTask();
        getBlogPostsTask.execute();
    } else {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("ERROR !!");
        builder.setMessage("Sorry there was an error getting data from the Internet.\nNetwork Unavailable!");
        ;

        AlertDialog dialog = builder.create();
        builder.setPositiveButton("Retry", new DialogInterface.OnClickListener()
        {
            @Override
            public void onClick(DialogInterface dialog, int which)
            {
                dialog.dismiss();
                runTask();
            }
        });

        dialog.show();
        Toast.makeText(this, "Network Unavailable!", Toast.LENGTH_LONG).show();
    }
}

这只是一个示例,您应该将AlertDialog实现为全局变量,以避免每次尝试发出请求时都创建AlertDialog

public void runTask () {
    if(isNetworkAvailable())
    {
        GetBlogPostsTask getBlogPostsTask = new GetBlogPostsTask();
        getBlogPostsTask.execute();
    } else {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("ERROR !!");
        builder.setMessage("Sorry there was an error getting data from the Internet.\nNetwork Unavailable!");
        ;

        AlertDialog dialog = builder.create();
        builder.setPositiveButton("Retry", new DialogInterface.OnClickListener()
        {
            @Override
            public void onClick(DialogInterface dialog, int which)
            {
                dialog.dismiss();
                runTask();
            }
        });

        dialog.show();
        Toast.makeText(this, "Network Unavailable!", Toast.LENGTH_LONG).show();
    }
}

TeRRo的代码中有一个小错误。 您正在调用
AlertDialog=builder.create()在添加按钮之前,这样按钮就不会添加

所以我更新了代码。此代码将检查internet连接,如果internet可用,它将执行您想要的任何操作,如果不可用,它将显示带有两个按钮的警报对话框

更新代码:

    if(isNetworkAvailable()) {

    /* DO WHATEVER YOU WANT IF INTERNET IS AVAILABLE */

    } else {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setCancelable(false);
        builder.setTitle("No Internet");
        builder.setMessage("Internet is required. Please Retry.");

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

        builder.setPositiveButton("Retry", new DialogInterface.OnClickListener(){
            @Override
            public void onClick(DialogInterface dialog, int which)
            {
                dialog.dismiss();
                InitiateDownload();
            }
        });
        AlertDialog dialog = builder.create(); // calling builder.create after adding buttons
        dialog.show();
        Toast.makeText(this, "Network Unavailable!", Toast.LENGTH_LONG).show();
    }
isNetworkAvailable()是一种帮助方法,用于确定Internet连接是否可用。

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager
            = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

注意:
builder.setCancelable(false)-因此用户无法通过按“上一步”按钮关闭对话框。愉快的编码。

TeRRo的代码中有一个小错误。 您正在调用
AlertDialog=builder.create()在添加按钮之前,这样按钮就不会添加

所以我更新了代码。此代码将检查internet连接,如果internet可用,它将执行您想要的任何操作,如果不可用,它将显示带有两个按钮的警报对话框

更新代码:

    if(isNetworkAvailable()) {

    /* DO WHATEVER YOU WANT IF INTERNET IS AVAILABLE */

    } else {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setCancelable(false);
        builder.setTitle("No Internet");
        builder.setMessage("Internet is required. Please Retry.");

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

        builder.setPositiveButton("Retry", new DialogInterface.OnClickListener(){
            @Override
            public void onClick(DialogInterface dialog, int which)
            {
                dialog.dismiss();
                InitiateDownload();
            }
        });
        AlertDialog dialog = builder.create(); // calling builder.create after adding buttons
        dialog.show();
        Toast.makeText(this, "Network Unavailable!", Toast.LENGTH_LONG).show();
    }
isNetworkAvailable()是一种帮助方法,用于确定Internet连接是否可用。

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager
            = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

注意:
builder.setCancelable(false)-因此用户无法通过按“上一步”按钮关闭对话框。愉快的编码。

您可以实现一个递归方法。我该怎么做?你能告诉我你能实现一个递归方法吗?我该怎么做?你能给我看看吗please@TeRRo无需更改答案,它包含在“DialogInterface dialog”中,而ooverriding the onCLick()method@TeRRo无需更改答案,它包含在“DialogInterface dialog”中,而O将覆盖onCLick()方法