Android之单选按钮对话框开发
1.建立一个Android项目,打开res/values目录下的strings.xml资源,写入如下代码
<resources> <string name="app_name">Sample_6_5</string> <string name="menu_settings">Settings</string> <string name="title_activity_main_activity2">MainActivity2</string> <string name="btn">显示单选列表对话框</string> <string name="title">单选列表对话框</string> <string name="ok">确定</string> </resources>
2.在res/values目录下新建一个array.xml文件,写入如下代码
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="msa"> <item>游泳</item> <item>打篮球泳</item> <item>写Java程序</item> </string-array> </resources>
3.将layout目录下的文件改成如下
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/EditText01" android:layout_width="match_parent" android:layout_height="wrap_content" android:cursorVisible="false" android:editable="false" /> <Button android:id="@+id/Button01" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/btn" /> </LinearLayout>
4.接下来就开发Activity部分的代码啦,如下
package com.example.sample_6_5; import android.app.Activity; import android.app.AlertDialog.Builder; import android.app.Dialog; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity2 extends Activity { final int LIST_DIALOG_SINGLE = 1;//该常量主要用来声明列表对话框的id @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btn = (Button) findViewById(R.id.Button01); btn.setOnClickListener(voc); } View.OnClickListener voc = new View.OnClickListener() { @Override public void onClick(View v) { showDialog(LIST_DIALOG_SINGLE);//用来显示列表对话框 } }; OnClickListener oc = new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { EditText et = (EditText) findViewById(R.id.EditText01); et.setText("您选择了:" + getResources().getStringArray(R.array.msa)[which]); } }; public Dialog onCreateDialog(int id)//一个重写了的Activity下面的函数(千万不可写错,尤其是大小写,不然运行不出结果) { Dialog dialog = null; Builder b = new Builder(this); b.setIcon(android.R.drawable.editbox_dropdown_dark_frame); b.setTitle(R.string.title); b.setSingleChoiceItems(R.array.msa, 0, oc); b.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); dialog = b.create();
/*
上面的代码也可如此写:
Dialog dialog = null;
Builder b = new Builder(this);
//记着,android.R.调用的是系统的属性(图标等),而R.调用的是自定义的属性(像图片等呀)
b.setIcon(android.R.drawable.editbox_dropdown_dark_frame)
.setTitle(R.string.title).setSingleChoiceItems(R.array.msa, 0, oc)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{ }
});
*/ return dialog; } public void onPrepareDialog(int id, Dialog dialog)//该回调函数在每次打开对话框时被调用 { Toast.makeText(this, "按钮被点击了,Toast显示", Toast.LENGTH_LONG).show(); super.onPrepareDialog(id, dialog); } @Override public boolean onCreateOptionsMenu(Menu menu)//该函数用于创建选择菜单,这里面没有用它,是因为创建项目是自动生成的 { getMenuInflater().inflate(R.menu.main, menu); return true; } }
6.呵呵,至此,程序开发完毕,看看它的运行效果图吧