关闭Android中的弹出窗口

Aru*_*run 4 android popup android-widget

我有以下功能,从菜单按钮单击调用弹出窗口.它有一个关闭弹出窗口的确定按钮.但是onclick按下按钮时不会启动该功能.此外,我需要在按下后退按钮时关闭弹出窗口.

    LayoutInflater inflater = (LayoutInflater) MainActivity.this
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    final PopupWindow pw = new PopupWindow(inflater.inflate(R.layout.about_popup, null, false),400,440, true);

    pw.showAtLocation(lv, Gravity.CENTER, 0, 0);
    View popupView=inflater.inflate(R.layout.about_popup, null, false);
    Button close = (Button) popupView.findViewById(R.id.okbutton);
    close.setOnClickListener(new OnClickListener() {

      public void onClick(View popupView) {
        pw.dismiss();
      }
    });
Run Code Online (Sandbox Code Playgroud)

谢谢

ρяσ*_*я K 10

目前您正在传递View的不同实例PopupWindow并尝试在不同实例中找到Button,使用您在PopupWindow中传递的相同实例来查找按钮.将您的代码更改为:

  LayoutInflater inflater = (LayoutInflater) MainActivity.this
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  View popupView = layoutInflater.inflate(R.layout.about_popup, null, false);
  final PopupWindow pw = new PopupWindow(popupView,400,440, true);

  pw.showAtLocation(lv, Gravity.CENTER, 0, 0);
    Button close = (Button) popupView.findViewById(R.id.okbutton);
    close.setOnClickListener(new OnClickListener() {

      public void onClick(View popupView) {
        pw.dismiss();
      }
    });
Run Code Online (Sandbox Code Playgroud)

第二种方法是使用PopupWindow实例再次为膨胀布局找到当前窗口上的按钮按钮为:

Button close = (Button) pw.findViewById(R.id.okbutton);
close.setOnClickListener(new OnClickListener() {

          public void onClick(View popupView) {
            pw.dismiss();
          }
        });
Run Code Online (Sandbox Code Playgroud)