?
? ? 有的时候,可能需要弹出一个对话框,以便从用户的输入来获取某些确认信息。这种情况下,可以重写Activity基类中的受保护方法(protected)onCreateDialog()。
??? 1.创建一个名为Dialog的工程。
??? 2.main.xml中的代码。
?
- <?xml?version="1.0"?encoding="utf-8"?>??
- <LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"??
- ????android:layout_width="fill_parent"??
- ????android:layout_height="fill_parent"??
- ????android:orientation="vertical"?>??
- ??????
- <Button??
- ????android:id="@+id/btn_dialog"??
- ????android:layout_width="fill_parent"???
- ????android:layout_height="wrap_content"??
- ????android:text="Click?to?display?a?dialog"??
- ????android:onClick="onClick"?/>??
- ???
- </LinearLayout>??
??? 3.DialogActivity.java中的代码。
?
- package?net.horsttnann.Dialog;??
- ??
- import?android.app.Activity;??
- import?android.app.AlertDialog;??
- import?android.app.Dialog;??
- import?android.content.DialogInterface;??
- import?android.os.Bundle;??
- import?android.view.View;??
- import?android.widget.Toast;??
- ??
- public?class?DialogActivity?extends?Activity?{??
- ????CharSequence[]?items?=?{?"Google",?"Apple",?"Microsoft"?};??
- ????boolean[]?itemsChecked?=?new?boolean[items.length];??
- ??
- ????/**?Called?when?the?activity?is?first?created.?*/??
- ????@Override??
- ????public?void?onCreate(Bundle?savedInstanceState)?{??
- ????????super.onCreate(savedInstanceState);??
- ????????setContentView(R.layout.main);??
- ????}??
- ??
- ????public?void?onClick(View?v)?{??
- ????????showDialog(0);??
- ????}??
- ??
- ????@Override??
- ????protected?Dialog?onCreateDialog(int?id)?{??
- ????????switch?(id)?{??
- ????????case?0:??
- ????????????return?new?AlertDialog.Builder(this)??
- ????????????????????.setIcon(R.drawable.ic_launcher)??
- ????????????????????.setTitle("This?is?a?dialog?with?some?simple?text...")??
- ????????????????????.setPositiveButton("OK",??
- ????????????????????????????new?DialogInterface.OnClickListener()?{??
- ????????????????????????????????public?void?onClick(DialogInterface?dialog,??
- ????????????????????????????????????????int?whichButton)?{??
- ????????????????????????????????????Toast.makeText(getBaseContext(),??
- ????????????????????????????????????????????"OK?clicked!",?Toast.LENGTH_SHORT)??
- ????????????????????????????????????????????.show();??
- ????????????????????????????????}??
- ????????????????????????????})??
- ????????????????????.setNegativeButton("Cancel",??
- ????????????????????????????new?DialogInterface.OnClickListener()?{??
- ????????????????????????????????public?void?onClick(DialogInterface?dialog,??
- ????????????????????????????????????????int?whichButton)?{??
- ????????????????????????????????????Toast.makeText(getBaseContext(),??
- ????????????????????????????????????????????"Cancel?clicked!",??
- ????????????????????????????????????????????Toast.LENGTH_SHORT).show();??
- ????????????????????????????????}??
- ????????????????????????????})??
- ????????????????????.setMultiChoiceItems(items,?itemsChecked,??
- ????????????????????????????new?DialogInterface.OnMultiChoiceClickListener()?{??
- ????????????????????????????????public?void?onClick(DialogInterface?dialog,??
- ????????????????????????????????????????int?which,?boolean?isChecked)?{??
- ????????????????????????????????????Toast.makeText(??
- ????????????????????????????????????????????getBaseContext(),??
- ????????????????????????????????????????????items[which]??
- ????????????????????????????????????????????????????+?(isChecked???"?checked!"??
- ????????????????????????????????????????????????????????????:?"?unchecked!"),??
- ????????????????????????????????????????????Toast.LENGTH_SHORT).show();??
- ??
- ????????????????????????????????}??
- ????????????????????????????}).create();??
- ????????}??
- ????????return?null;??
- ????}??
- }??
??? 4.调试。
??? 点击按钮弹出对话框,在CheckBox上面打勾,就会弹出一个Toast提示,显示选中物件的文本信息。点击“OK”或“Cancel”按钮会使对话框消失。
效果图:
更多信息请查看?java进阶网?http://www.javady.com