2011-04-06 131 views
0

我正在使用佈局文件來顯示對話框。我的xml文件是android對話框警報

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" android:orientation="vertical"> 
    <EditText android:id="@+id/dialogEditText" android:text="Enter Your Text Here" android:layout_height="wrap_content" android:layout_width="match_parent"></EditText> 
    <DatePicker android:id="@+id/datPicker" android:layout_height="wrap_content" android:layout_width="match_parent" ></DatePicker> 
    <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> 
    <Button android:text="Add" android:id="@+id/dialogAddBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true"></Button> 
    <Button android:text="Cancel" android:id="@+id/dialogCancelBtn" android:layout_width="200px" android:layout_height="wrap_content" android:layout_centerHorizontal="true"></Button> 
    </LinearLayout> 
</LinearLayout> 

我想在用戶單擊「確定」或「取消」按鈕時執行某些操作。所以我爲這些按鈕創建了匿名處理程序。我的編碼是

LayoutInflater inflater = LayoutInflater.from(obj); 
      View inflatedView1= inflater.inflate(R.layout.dialog_view,null); 

      final Dialog d= new Dialog(obj); 
      final Window window= d.getWindow(); 
      window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND); 
      window.setTitle("Add Item"); 
      window.setContentView(R.layout.dialog_view); 

      final EditText input= (EditText) inflatedView1.findViewById(R.id.dialogEditText); 
      Button okBtn= (Button)inflatedView1.findViewById(R.id.dialogAddBtn); 
      okBtn.setOnClickListener(new OnClickListener() { 

        public void onClick(View v) { 
         Toast msg= Toast.makeText(obj.getApplicationContext(),"Hello",Toast.LENGTH_LONG); 
         msg.show(); 
        } 
       }); 

      Button cancelBtn= (Button) inflatedView1.findViewById(R.id.dialogCancelBtn); 
      cancelBtn.setOnClickListener(new OnClickListener() { 

       public void onClick(View v) { 
        d.dismiss(); 
       } 
      }); 
      d.show(); 

當我點擊「確定」或「取消按鈕」沒有任何事情發生。我無法理解爲什麼會發生這種情況。 請給我一些解決方案。

回答

1

要設置事件處理程序上的膨脹視圖,但在同一內容視圖設置爲您簡單的佈局:

window.setContentView(R.layout.dialog_view); 

此行只是改變

window.setContentView(inflatedView1); 

或者,也許一個沒有使用佈局充氣器的更好方法是使用

d.setContentView(R.layout.dialog_view); 

然後setti通過

Button okBtn = (Button) d.findViewById(R.id.dialogAddBtn); 
okBtn.setOnClickListener(... 

邁克爾

+0

感謝朋友納克的事件處理程序,我非常感謝你。其實我是新來的android。謝謝兄弟....... – 2011-04-06 12:05:08

+0

嗯,我也是:D但是一旦你偶然發現了你記得他們的那些小事情;) – 2011-04-06 12:05:59