android AlertDialog.Builder对象适合于alert提示窗口,使用非常广泛,这里将用alert dialog案例来带大家学习一下AlertDialog的用法,顺便介绍一下Toast对象的使用。
1:首先在activity_main.xml中添加两个按钮,一个button弹出Toast信息,另外一个弹出AlertDialog对话窗口,代码如下。
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.baidu.alertdemo.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="80dp" android:textSize="20dp" android:text="请不要删除我啊" android:id="@+id/text1"/> <Button android:text="删除文本" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="50dp" android:id="@+id/delBtn" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" /> <Button android:text="Toast提示" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/delBtn" android:layout_alignLeft="@+id/delBtn" android:layout_alignStart="@+id/delBtn" android:layout_marginBottom="65dp" android:id="@+id/toastBtn" /> </RelativeLayout>
2:在MainActivity.java类中实现实现这两个button按钮的点击事件。注意:new AlertDialog.Builder (Context context)中的Context必须是此Activity中的Context,不能使用getApplicationContext()得到的context,否则会报Unable to add window -- token null is not for an application错误。
解决方法:用static修饰Context,如private static Context myContext;这样就不会在使用中被销毁了,如下。
package com.baidu.alertdemo; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.support.v4.app.DialogFragment; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private Button toastButton; private Button delButton; private TextView myText; //context对象要用static,不然会报错 private static Context myContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toastButton = (Button)findViewById(R.id.toastBtn); delButton = (Button)findViewById(R.id.delBtn); myText = (TextView)findViewById(R.id.text1); //toast事件 toastButton.setOnClickListener(new ShowToashClick()); //del删除文本 delButton.setOnClickListener(new DelButtonClick()); //初始化context myContext = this; } //实现显示toast事件 class ShowToashClick implements View.OnClickListener{ @Override public void onClick(View v) { Toast.makeText(getApplicationContext(),"toast弹一下",Toast.LENGTH_SHORT).show(); } } //实现删除文本事件 class DelButtonClick implements View.OnClickListener{ @Override public void onClick(View v) { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(myContext); alertDialogBuilder.setMessage("你确定要删除吗"); alertDialogBuilder.setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //确认之后删除textview文本 myText.setText(""); Toast.makeText(getApplicationContext(),"删除成功",Toast.LENGTH_SHORT).show(); } }); alertDialogBuilder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(),"取消成功",Toast.LENGTH_LONG).show(); } }); //创建会话(很重要) AlertDialog alertDialog = alertDialogBuilder.create(); alertDialog.show(); } } }
android Toast和AlertDialog的区别是toast只是提示,而AlertDialog可以在提示之后选择是确认还是取消,非常的实用,下面是运行之后的效果。