為了實現具有選擇功能的對話框這一程序,首先我們來介紹一個非常有用的組件——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 name="app_name">demo3</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="button_text">選擇顏色</string>
<string name="string_alert_title">請選擇您喜歡的顏色</string>
<string name="string_alert_body">你選擇的是:</string>
<string name="string_alert_ok">確認</string>
<string name="string_alert_cancel">取消</string>
<array name="items_dialog">
<item>紅色</item>
<item>綠色</item>
<item>藍色</item>
</array>
</resources>
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11