调用AlertDialog并解决弹窗不显示的问题
珂泽 • 2020 年 10 月 04 日
Loading...
安卓中自带的弹窗还是很有意思的,不过今天遇到了无法显示的问题,最后发现是自己的疏忽没有调用`.show()`方法。
记录一下调用安卓自带弹窗 AlertDialog 的写法
## 布局
首先写一个线性布局,里面加一个按钮
```xml
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
android:id="@+id/uninstall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/uninstall" />//文本是:卸载
```
思路是点击这个卸载按钮,然后弹窗提示是否卸载。
## 代码
首先贴出全部代码
```java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button uns = findViewById(R.id.uninstall);
OnClick onClick = new OnClick();
uns.setOnClickListener(onClick);//给按钮uninstall创建一个点击事件
}
class OnClick implements View.OnClickListener{
public void onClick(View v){
if (v.getId()== R.id.uninstall){
AlertDialog.Builder builder =new AlertDialog.Builder(MainActivity.this);// 这里面要写清楚在哪个activity弹窗
builder.setTitle("您好,请确认!").setMessage("真的要卸载嘛???");
builder.setPositiveButton("残忍卸载", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "卸载是可能的,这辈子都不可能!", Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("不,点错了", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "很识时务哦~", Toast.LENGTH_SHORT).show();
}
});
AlertDialog alert = builder.create();//完成对话框对象构建
alert.show();// 展示对话框
}
}
}
}
```
## 基本使用流程
> 参考:https://www.runoob.com/w3cnote/android-tutorial-alertdialog.html
Step 1:创建AlertDialog.Builder对象;
Step 2:调用setIcon()设置图标,setTitle()或setCustomTitle()设置标题;
Step 3:设置对话框的内容:setMessage()还有其他方法来指定显示的内容;
Step 4:调用setPositive/Negative/NeutralButton()设置:确定,取消,中立按钮;
Step 5:调用create()方法创建这个对象,再调用show()方法将对话框显示出来;
关于这个`.show()`方法的使用,可以直接在设备标题后面调用:
```java
builder.setTitle("您好,请确认!").show();
builder.setMessage("真的要卸载嘛???").show();
···
```
也可以在后面直接批量调用:
~~~java
builder.setTitle("您好,请确认!").setMessage("真的要卸载嘛???");
...
AlertDialog alert = builder.create();
alert.show();
~~~
## 成果图
![cg](/usr/uploads/kaygbcom/20201004201747.png)