简单对话框、选项对话框和Toast『Android系列11』

        这篇文章谈谈各种对话框的实现。

        首先简单对话框,分为三部分:标题,内容和下面的按键,先看没有按键的对话框的声明方式:

new AlertDialog.Builder(Main.this).setTitle("标题").setMessage("内容").show();

         对话框一共有三个按键,分别对应肯定否定和中立:

public AlertDialog.Builder setPositiveButton (CharSequence text, DialogInterface.OnClickListener listener) 
public AlertDialog.Builder setNegativeButton (CharSequence text, DialogInterface.OnClickListener listener)
public AlertDialog.Builder setNeutralButton (CharSequence text, DialogInterface.OnClickListener listener)

        具体点击哪个按钮触发的事件在DialogInterface.OnClickListener对象里面编写,所以完整的简单对话框就是在第一条代码基础上再加上某个或某几个按键:

new AlertDialog.Builder(Main.this).setTitle("标题").setMessage("内容")
				.setPositiveButton("OK", new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						//这里编写点击对话框按钮后触发的事件
					}
				}).show();

       简单对话框很简单,然后继续学习选项对话框,先想象一下选项对话框和简单对话框的不同,好像就是中间的内容格式不同和没有下面的三个按钮,就是这个了,设置选项和点击监控:

public AlertDialog.Builder setItems (CharSequence[] items, DialogInterface.OnClickListener listener)

        第二个参数已经在简单对话框中学习过是定义点击事件的触发的,那么第一个参数是什么意思,又要从哪里获取呢?其实,这个参数就是我们说要展示的选项对话框内的“选项”,是从values/*.xml中获取的:

<array name="sports">
        <item name="basketball">篮球</item>
        <item name="football">足球</item>
        <item name="baseball">棒球</item>
        <item name="pingpang">乒乓球</item>
    </array>

         看下完整选项对话框的代码:

new AlertDialog.Builder(Main.this)
				.setTitle("标题")
				.setItems(R.array.sports,
						new DialogInterface.OnClickListener() {
							@Override
							public void onClick(DialogInterface dialog,
									int itemId) {
								//这里编写点击对话框按钮后触发的事件
							}
						}).show();

        也是很简单吧,这里需要注意的是setItems可以换成其他形式,比如复选框setMultiChoiceItems等,自己动动手试试吧,最后在看个更简单的短暂显示提示框:Toast
Toast.makeText(Main.this, "就这么简单", Toast.LENGTH_SHORT).show();

        第三个参数还可以选择Toast.LENGTH_LONG,显示的时间更加长一点。

       三种对话框结合起来写个简单示例:

package com.dazlly;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;

public class Main extends Activity {

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		findViews();

		setListener();
	}

	private Button firstButton;

	private void findViews() {
		firstButton = (Button) findViewById(R.id.firstButton);
	}

	private void setListener() {
		firstButton.setOnClickListener(show);
	}

	private Button.OnClickListener show = new Button.OnClickListener() {
		@Override
		public void onClick(View arg0) {
			new AlertDialog.Builder(Main.this)
					.setTitle(R.string.title)
					.setMessage(R.string.message)
					.setNegativeButton(R.string.back,
							new DialogInterface.OnClickListener() {
								@Override
								public void onClick(DialogInterface dialog,
										int which) {
								}
							})
					.setPositiveButton(R.string.go,
							new DialogInterface.OnClickListener() {
								@Override
								public void onClick(DialogInterface dialog,
										int itemId) {
									showList();
								}
							}).show();
		}
	};

	private void showList() {

		new AlertDialog.Builder(Main.this)
				.setTitle(R.string.list)
				.setItems(R.array.sports,
						new DialogInterface.OnClickListener() {
							@Override
							public void onClick(DialogInterface dialog,
									int which) {
								String[] list = getResources().getStringArray(
										R.array.sports);
								Toast.makeText(Main.this, "你选择了" + list[which],
										Toast.LENGTH_SHORT).show();
							}
						}).show();
	}
}

        至于main.xml和strings.xml里面的代码就不粘贴了,补充完整运行一下看看效果吧。

你可能感兴趣的:(android,list,String,Class,dialog,button)