Popup不会变得不可见,但它通过代码并没有任何反应

时间:2011-08-14 15:04:42

标签: android popupwindow

我有问题让弹出窗口不可见。当我按下显示它变得可见但是当我按下取消按钮(取消按钮是弹出窗口)时,它不会变得不可见,但它通过代码而没有通过正常。

final PopupWindow pw = new PopupWindow(inflater.inflate(R.layout.popup,
            null, false), 300, 300, true);

    View layout = inflater.inflate(R.layout.popup,
            (ViewGroup) findViewById(R.id.llPopup));

    Button btnOK = (Button) layout.findViewById(R.id.btnOK);
    Button btnCancel = (Button) layout.findViewById(R.id.btnCancel);
    btnCancel.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if (pw != null) {
                pw.dismiss();
            }

        }
    });

这是popup.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:padding="10dip"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#AAAAAAAA"
    android:id="@+id/llPopup"
    >


<LinearLayout 
    android:orientation="horizontal"
    android:padding="10dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
>
<TextView 
    android:id="@+id/txtSearchBy"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Search By:"
/>
    <RadioGroup
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_gravity="right"
      android:orientation="vertical">
      <RadioButton
        android:id="@+id/rbPrice"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Time" />
      <RadioButton
        android:id="@+id/rbDuration"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Price" />
      <RadioButton
        android:id="@+id/rbLongitude"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Longitude" />
    </RadioGroup>

</LinearLayout>



    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"

        >
        <Button 
            android:id="@+id/btnCancel"
            android:layout_width="100sp"
            android:layout_height="wrap_content"
            android:text="Cancel"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
        />

        <Button 
            android:id="@+id/btnOK"
            android:layout_width="100sp"
            android:layout_height="wrap_content"
            android:text="OK"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
        />

    </RelativeLayout>


</LinearLayout>

我做错了可以有人帮助我吗?

1 个答案:

答案 0 :(得分:2)

View layout = inflater.inflate(R.layout.popup,
        (ViewGroup) findViewById(R.id.llPopup));

final PopupWindow pw = new PopupWindow(layout, 300, 300, true);

Button btnOK = (Button) layout.findViewById(R.id.btnOK);
Button btnCancel = (Button) layout.findViewById(R.id.btnCancel);
btnCancel.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if (pw != null) {
            pw.dismiss();
        }

    }
});

每次调用inflate方法时,您都会创建新的View;因此,您设置监听器的取消按钮与弹出窗口内的取消按钮不同。如上所示,相同的View用于:初始化弹出窗口并设置单击侦听器。