我在前面写过关于创建AlertDialog.Builer的方法
但在使用的过程当中,发现非常不方便,就想了个办法封装这个方法,这样我们再次使用的时候只需要调用这个方法就行了。
我的创建思路是在java包下建一个工具类,其他类需要创建按钮的时候只要调用工具类的相应方法即可。
首先我们在对应的activity xml文件中创建需要的Button标签,并设置id
然后我们在java包中创建一个名叫Util的类文件,不需要继承任何类
创建一个名为“createButtonList”的方法,这个方法就是封装后的方法
首先要传入Button,不然方法不知道是要设置那个Button
看了我前面的文章或者你本身使用过AlertDialog.Builder方法,
你会知道在new AlertDialog.Builder(.this)
中,这个".this"需要class文件名,那我们在传入参数的时候就需要context对象
然后因为每次创建的列表元素不一样,所以我们需要传入String[]数组,这个数组就是列表的元素
综上,这个方法需要传入三个参数,分别是“Button”,“String[]”和“Context”
但因为在Java中的匿名内部类只可以访问final的局部变量,所以在String和Context前都必须加上final修饰
静态变量不能指向非静态方法,所以在方法前面要加上static修饰
我们直接创建
Util.java
public static void createButtonList(Button button,final String[] items,final Context context){}
//创建button的监听事件
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("FUNCTION") //此处设置弹出窗口的标题
//如果需要也可以在标题前面加上图标,使用.setIcon
.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//makeText第一个输入是Context对象,直接带入context
//第二个为输出文本,这里代入数组items(**不能忘了后面的which序号**)
//第三个为窗口弹出时间长短
Toast.makeText(context, items[which],Toast.LENGTH_SHORT)
//设为显示
.show();
}
});
builder.create().show();
}
});
MainActivity.java
Button button; //创建一个Button对象
//这是写我们需要的列表元素
final String[] items = new String[]{"book1","book2","book3"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//绑定对应的Button对象
button = (Button)findViewById(R.id.btn);
//引用Util类中的createButtonList方法
Util.creatButtonList(button, items, MainActivity.this);
}
总结一下过程顺序,xml ⇒ Util.java ⇒ MainActivity.java(就是你需要引用方法的java文件)
以下是这个工程的完整打包文件
https://download.csdn.net/download/tnxlcn/10641458