您的位置:首页 > 其它

采用回调Activity的形式创建AlertDialog单选列表框

2014-01-07 21:34 267 查看
       当你希望显示一个对话框时, 调用showDialog(int)并将对话框的id传给它.
  当一个对话框第一次被请求时,Android调用onCreateDialog(int). 这里是你初始化对话框的地方. 这个回调函数传入的id和showDialog(int)相同. 创建对话框之后,将返回被创建的对象.
  在对话框被显示之前,Android还会调用onPrepareDialog(int, Dialog). 如果你希望每次显示对话框时有动态更改的内容, 那么就改写这个函数. 该函数在每次一个对话框打开时都调用. 如果你不定义该函数,则对话框每次打开都是一样的. 该函数也会传入对话框的id以及你在onCreateDialog()中创建的Dialog对象.
  最好的定义onCreateDialog(int) 和onPrepareDialog(int, Dialog) 的方法就是使用一个switch语句来检查传入的id. 每个case创建相应的对话框. 
一个对话框总是被创建和显示为一个Activity的一部分. 你应该在Activity的onCreateDialog(int)中创建对话框. 当你使用这个回调函数时,Android系统自动管理每个对话框的状态并将它们和Activity连接, 将Activity变为对话框的"所有者". 这样,每个对话框从Activity继承一些属性. 例如,当一个对话框打开时,
MENU键会显示Activity的菜单, 音量键会调整Activity当前使用的音频流的音量.

  注意: 如果你希望在onCreateDialog()方法之外创建对话框, 它将不会依附在Activity上. 你可以使用setOwnerActivity(Activity)来将它依附在Activity上.

实例






Main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".MainActivity" 

    android:orientation="vertical">

    <Button android:id="@+id/mybut"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="弹出单选列表框"

        android:layout_gravity="center_horizontal"/>

  

    <TextView

        android:id="@+id/textView"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="@string/hello_world" 

        android:layout_gravity="center_horizontal"/>

</LinearLayout>

Main.java

package com.example.singlechoicedialog2;

import android.os.Bundle;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.Dialog;

import android.app.AlertDialog.Builder;

import android.content.DialogInterface;

import android.content.DialogInterface.OnClickListener;

import android.graphics.Color;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

public class MainActivity extends Activity {

final int SINGLE_DIALOG=0x11;
Button button;
TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

button=(Button) super.findViewById(R.id.mybut);
textView=(TextView) super.findViewById(R.id.textView);

button.setOnClickListener(new View.OnClickListener() {

@SuppressWarnings("deprecation")
@Override
public void onClick(View v) {
//当调用showDialog的时候,Android调用OnCreateDialog(int id)方法,返回一个对话框
showDialog(SINGLE_DIALOG);
}
});
}
@Override
protected Dialog onCreateDialog(int id){

Log.i("", ""+id);

//判断是那种类型的对话框
switch(id){
case SINGLE_DIALOG:
Builder b=new AlertDialog.Builder(this);
   b.setIcon(R.drawable.ic_launcher);
   b.setTitle("回调形式建立对话框");
   b.setSingleChoiceItems(new String[]{"红色","绿色","蓝色"},1, new OnClickListener(){

@Override
public void onClick(DialogInterface dialog, int which) {
switch(which){
case 0:
textView.setBackgroundColor(Color.RED);
break;
case 1:
textView.setBackgroundColor(Color.GREEN);
break;
case 2:
textView.setBackgroundColor(Color.BLUE);
break;
}
}

   });
   
   b.setNegativeButton("确定", null);
   
   return b.create();
}
return null;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  AlertDialog