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