2011-04-06 140 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