Android Dialog 对话框多种使用方式

个人归结为 alertDialog 具备四种使用方式
① 点击按钮 弹出 确定 取消,选项
② 使用adapter 以ListView 形式展现进行选择
③ listView 形式展现,实现单选
④ listView 形式展现,实现多选
注意 多选的监听器 OnMultiChoiceClickListener()

// 第一种方式:
1 构建AlertDialog 对象
2 调用 show()方法 与pupuMenu的show 方法类似
package com.example.gp11_day12_dialog1;

import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;

public class MainActivity extends Activity {

private AlertDialog exitDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //初始化对话框
    initDialog();
}

private void initDialog() {
    //得到对话框构建器对象
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    //使用对话框构建器对象设置对话框的属性
    builder.setTitle("提示")
           .setMessage("你真想退出啊?")
           .setIcon(R.drawable.ic_launcher)
           .setCancelable(false)//当点击对话框周围时是否退出该对话框
           .setPositiveButton("真想",new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                  //结束当前的activity
                finish();
            }
           })
           .setNegativeButton("不想", null);

    //生成对话框对象
    exitDialog = builder.create();
}

//当点击按钮时退出当前的activity
public void exits(View v)
{
    exitDialog.show();
}

//当用户按下某个键时的处理方法
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode==KeyEvent.KEYCODE_BACK)//判断用户按下的是否是回退键
        exitDialog.show();
    return super.onKeyDown(keyCode, event);
}

}

package com.example.gp11_day12_dialog2;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class MainActivity extends Activity {

    private TextView textView;
    //对话框和适配器结合使用
    private AlertDialog colorDialog;
    private ArrayAdapter<String> adapter;

    //把对话框设置为单选模式
    private AlertDialog fontDialog;
    private float[] fontSize={20f,25f,30f,35f,40f};

    //把对话框设置为多选模式
    private AlertDialog aihaoDialog;
    private String[] aihao = {"eat","sleep","play","study"};
    private boolean[] select={true,true,true,false};//设置每个选项默认是否被选中

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = (TextView) findViewById(R.id.textView);
        //初始化对话框
        initDialog();
    }
    private void initDialog() {

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1);
        adapter.add("红色");
        adapter.add("绿色");
        adapter.add("蓝色");

        builder.setTitle("颜色选择对话框")
               .setIcon(R.drawable.ic_launcher)
               .setAdapter(adapter, new OnClickListener() {
                //参数which接收的是被点击的数据项在适配器中的位置
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    //得到用户选择的数据项
                    String data = adapter.getItem(which);
                    textView.setText(data);
                }
            });
        colorDialog = builder.create();

        //单选模式的对话框
        fontDialog = new AlertDialog.Builder(this)
                     .setTitle("字体大小选择对话框 ")
                     .setIcon(R.drawable.ic_launcher)
                     //第一个参数是显示的数据项的资源id
                     //第二个参数是默认被选中的选项
                     .setSingleChoiceItems(R.array.fonts, 2, new OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {

                            String[] datas = getResources().getStringArray(R.array.fonts);
                            String item = datas[which];
                            setTitle(item);
                            //把TextView的字体设置为当前用户选择的大小
                            textView.setTextSize(fontSize[which]);
                            //关闭对话框
                            dialog.dismiss();
                        }
                    }).create();
        //多选模式的对话框
        aihaoDialog = new AlertDialog.Builder(this)
                      .setTitle("爱好选择对话框")
                      .setIcon(R.drawable.ic_launcher)
                      .setMultiChoiceItems(aihao, select, new OnMultiChoiceClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                            //which接收的是用户选择的数据项在数组中的下标
                            //isChecked接收的是用户选择的数据项是否被选中的布尔值
                            select[which]=isChecked;//记录用户的选择结果
                        }
                    })
                     .setPositiveButton("确定",new OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // 当用户选择完成时,把被选中的数据项显示到textView中
                            textView.setText("");
                            for(int i=0;i<select.length;i++)
                            {
                                if(select[i])
                                    textView.append(aihao[i]+" ");
                            }

                        }
                    })
                     .create();


    }








    //点击按钮时弹出选择颜色的对话框
    public void selectColor(View v)
    {
        colorDialog.show();
    }
    //点击按钮时弹出选择字体的对话框
    public void selectFont(View v)
    {
        fontDialog.show();
    }
    //点击按钮时弹出选择爱好的对话框
    public void selectHobby(View v)
    {
        aihaoDialog.show();
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值