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.呵呵,至此,程序开发完毕,看看它的运行效果图吧

 

 

 

posted @ 2012-09-27 08:55  Edenme  阅读(361)  评论(0编辑  收藏  举报