如何使用Android中的菜单项关闭弹出窗口

时间:2016-09-12 13:41:30

标签: android nullpointerexception onclicklistener menuitem

自昨天以来,我一直试图弄清楚这个问题,但我没有到达任何地方。教程显示使用按钮调用popupwindow dismiss函数但是我有一个MenuItem创建弹出窗口,窗口内是一个取消按钮。我希望在按下取消按钮时关闭窗口。 这是代码

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Intent intent;
    switch (item.getItemId()) {
        case R.id.ResetP:
            passwordWindow();
            break;}

passwordWindow()的代码

private void passwordWindow()
{
    layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
    ViewGroup container = (ViewGroup) layoutInflater.inflate(R.layout.password_layout,null);

    popupWindow = new PopupWindow(container,(int)(width * .6),(int)(height*.3),false);
    popupWindow.showAtLocation(relativeLayout, Gravity.NO_GRAVITY,(int)(width * .2),(int)(height *.3));

    Button btn = (Button) findViewById(R.id.btn_cancel);//This button is in password_layout.xml file
    btn.setOnClickListener(new Button.OnClickListener() {
        @Override
        public void onClick(View view) {
            popupWindow.dismiss();
        }
    });
}

我的密码窗口有一个确定按钮和一个取消按钮,我希望在按下取消按钮时窗口关闭但是我收到此错误

  

java.lang.NullPointerException:尝试在空对象引用上调用虚方法'void android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)'

这让我把头发拉出来,有人可以帮帮我 感谢

1 个答案:

答案 0 :(得分:3)

Button btn = (Button)container.findViewById(R.id.btn_cancel);//This button is in password_layout.xml file

添加容器 .findViewById ...