2011年11月22日 星期二

Dialog 對話方塊

AlertDialog宣告成protected所以必須使用子類別Builder來建立實體
Dialog也是Android中最常用到的元件之一,與Menu一樣不是View的子類別。我將API上的繼承關係貼上讓大家參考

在API中Developer Guide 還有更多相關樣式介紹和使用說明 連結如下:
http://developer.android.com/guide/topics/ui/dialogs.html

package com.demo.android.RadioGroupA;


import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

public class RadioGroupAActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
     
     
         //AlertDialod Button
           Button submit=(Button)findViewById(R.id.submit);
           submit.setOnClickListener(btn_submit);
    }
     
           //AlertDialog
             private OnClickListener btn_submit=new OnClickListener(){
            public void onClick(View v) {
        openOptionDialog();
    }

private void openOptionDialog() {
// TODO Auto-generated method stub
//建立AlertDialog實體並使用子類別Builder
AlertDialog.Builder builder=new AlertDialog.Builder(RadioGroupAActivity.this);
//設定Title&message
builder.setTitle("你喜歡哪一種音樂??");
builder.setMessage("古典/搖滾/現代");
//設定Icon
builder.setIcon(R.drawable.ic_launcher);
//傳回AlertDialog物件,但不顯示對話方塊
    builder.create();
    builder.setPositiveButton("OK",new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub

}
});
    //傳回AlertDialog物件,顯示對話方塊
builder.show();
}
             };    

}
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" >

  <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="請選擇你的興趣:"
        />
    <RadioGroup android:id="@+id/RadioGroup"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >
    <RadioButton android:id="@+id/music"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Music"      
           />
    <RadioButton android:id="@+id/business"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Business"      
           />
     <RadioButton android:id="@+id/sport"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Sport"      
           />
    </RadioGroup>
<LinearLayout android:id="@+id/LinerLayout01"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:orientation="horizontal">
    <Button android:id="@+id/submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="確認"      
        />
    <Button android:id="@+id/toast"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Toast"      
        />
    <Button android:id="@+id/next"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Next"      
        />
</LinearLayout>
</LinearLayout>

5 則留言:

  1. 老師,請問第二層的LinearLayout中的android:id="@+id/LinerLayout01",一定要加01嗎?

    回覆刪除
  2. 不用,我是為了區別,你可以加或不加

    回覆刪除
  3. private void openOptionDialog() {
    // TODO Auto-generated method stub
    老師 這段的private 是用自動生成嗎?? 如果是的話..我好像沒辦法生成

    回覆刪除
  4. 你必須先在這裡呼叫
    //AlertDialog
    private OnClickListener btn_submit=new OnClickListener(){
    public void onClick(View v) {
    openOptionDialog();
    }
    當它出現刪格線時就可以自動產生,若沒有請檢查你是否有import這兩個
    import android.app.AlertDialog;
    import android.content.DialogInterface;

    回覆刪除