您的位置:首页 > 移动开发 > Android开发

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

2012-08-15 15:46 344 查看
这篇文章谈谈各种对话框的实现。

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

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里面的代码就不粘贴了,补充完整运行一下看看效果吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐