为了实现具有选择功能的对话框这一程序,首先我们来介绍一个非常有用的组件——AlertDialog。
java.lang.Object
|-- Android.app.Dialog
|-- android.app.AlertDialog
从继承关系中我们可以看出,AlertDialog直接继承自Dialog。我们知道,Dialog窗口主要目的是与User确认及互动,用于“程序提示”,“警告”或“确认”等,是android应用程序中非常重要的一部分。
在android sdk中,虽然有许多窗口,但真正具有交互功能的则为AlertDialog对话窗口。AlertDialog同样提供了一个静态的嵌套类AlertDialog.Builder供开发者使用。
AlertDialog可以以列表项目的方式来显示内容,这种显示方式也是非常常见的,如用于投票、选择器以及遥控器等应用程序。
程序运行效果:
Activity程序如下所示,注意在第二个AlertDialog对话框中设置了两个按钮,但由于本程序重在说明AlertDialog用法,故未添加具体的实现。
public class MainActivity extends Activity
{
private Button button=null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_main);
this.button=(Button)super.findViewById(R.id.button);
//设置按钮单击消息响应
this.button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
//新建AlertDialog对话框
new AlertDialog.Builder(MainActivity.this)
.setTitle(R.string.string_alert_title)
.setItems(R.array.items_dialog,new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
//取出响应字符串资源
CharSequence string_body=MainActivity.this.getResources().getString(R.string.string_alert_body);
final String[] colors=MainActivity.this.getResources().getStringArray(R.array.items_dialog);
//弹出新的对话框
new AlertDialog.Builder(MainActivity.this)
.setMessage(string_body+colors[which])
.setNeutralButton(R.string.string_alert_ok, new DialogInterface.OnClickListener() //确认操作
{
@Override
public void onClick(DialogInterface dialog, int which)
{
//添加操作
}
})
.setNegativeButton(R.string.string_alert_cancel, new DialogInterface.OnClickListener() //取消操作
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
}).show();
}
}).show();
}
});
}
}
布局文件非常简单,只有一个Button组件,此处不再给出。
字符串资源文件如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string>demo3</string>
<string>Settings</string>
<string>Hello world!</string>
<string>选择颜色</string>
<string>请选择您喜欢的颜色</string>
<string>你选择的是:</string>
<string>确认</string>
<string>取消</string>
<array>
<item>红色</item>
<item>绿色</item>
<item>蓝色</item>
</array>
</resources>