Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Can';t单击弹出窗口中按钮上的按钮_Android_Button_Click_Popupwindow - Fatal编程技术网

Android Can';t单击弹出窗口中按钮上的按钮

Android Can';t单击弹出窗口中按钮上的按钮,android,button,click,popupwindow,Android,Button,Click,Popupwindow,当我显示一个包含按钮的弹出窗口时,我不能点击他。执行onclick,但不更改图形 它显示PopupWindow: public void btn_friendsgame_newClick(View v) { LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE); View popupView

当我显示一个包含按钮的弹出窗口时,我不能点击他。执行onclick,但不更改图形

它显示PopupWindow:

public void btn_friendsgame_newClick(View v) {
    LayoutInflater layoutInflater = 
            (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);  

    View popupView = layoutInflater.inflate(R.layout.custom_dialog, null);

    RelativeLayout content = (RelativeLayout) popupView.findViewById(R.id.layout_content);



    Button b = new Button(this); // THIS BUTTON CAN'T CLICK!



    b.setText("Test");
    b.setLayoutParams(new LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT));
    content.addView(b);

    final PopupWindow popupWindow = new PopupWindow(popupView, 
               LayoutParams.MATCH_PARENT,  LayoutParams.WRAP_CONTENT);  

    popupWindow.showAtLocation(this.findViewById(R.id.main), Gravity.CENTER, 0, 0);
    Button close = (Button) popupView.findViewById(R.id.btn_popup_settings);
    close.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            popupWindow.dismiss();
        }
    });
自定义_dialog.xml:


如何修复此问题?

您没有像使用
close
按钮那样将他附加到
onClickListener
。我不知道你想要
b
做什么,所以我不能给你任何代码,但你显然知道如何将
onClick
事件附加到按钮,因为你已经有了
close
。对
b
执行同样的操作,并在
onClick()
中放入所需的逻辑,您应该能够单击他

public void btn_friendsgame_newClick(View v) {
    LayoutInflater layoutInflater = 
            (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);  

    View popupView = layoutInflater.inflate(R.layout.custom_dialog, null);

    RelativeLayout content = (RelativeLayout) popupView.findViewById(R.id.layout_content);



    Button b = new Button(this); // THIS BUTTON CAN'T CLICK!



    b.setText("Test");
    b.setLayoutParams(new LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT));
    content.addView(b);

   // here set onClick
   b.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
        // put logic in here to do whatever you want
      }


    final PopupWindow popupWindow = new PopupWindow(popupView, 
               LayoutParams.MATCH_PARENT,  LayoutParams.WRAP_CONTENT);  

    popupWindow.showAtLocation(this.findViewById(R.id.main), Gravity.CENTER, 0, 0);
    Button close = (Button) popupView.findViewById(R.id.btn_popup_settings);
    close.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            popupWindow.dismiss();
        }
    });

您没有像使用
close
按钮那样将他附加到
onClickListener
。我不知道你想要
b
做什么,所以我不能给你任何代码,但你显然知道如何将
onClick
事件附加到按钮,因为你已经有了
close
。对
b
执行同样的操作,并在
onClick()
中放入所需的逻辑,您应该能够单击他

public void btn_friendsgame_newClick(View v) {
    LayoutInflater layoutInflater = 
            (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);  

    View popupView = layoutInflater.inflate(R.layout.custom_dialog, null);

    RelativeLayout content = (RelativeLayout) popupView.findViewById(R.id.layout_content);



    Button b = new Button(this); // THIS BUTTON CAN'T CLICK!



    b.setText("Test");
    b.setLayoutParams(new LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT));
    content.addView(b);

   // here set onClick
   b.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
        // put logic in here to do whatever you want
      }


    final PopupWindow popupWindow = new PopupWindow(popupView, 
               LayoutParams.MATCH_PARENT,  LayoutParams.WRAP_CONTENT);  

    popupWindow.showAtLocation(this.findViewById(R.id.main), Gravity.CENTER, 0, 0);
    Button close = (Button) popupView.findViewById(R.id.btn_popup_settings);
    close.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            popupWindow.dismiss();
        }
    });

这是一个
警报对话框吗?或者什么样的弹出窗口?为什么不使用警报对话框生成器,它最多包含三个可以编码的按钮。这是一个
AlertDialog
对话框吗?或者什么样的弹出窗口?为什么不使用警报对话框生成器,它最多包含三个可以编码的按钮。不,不。从XML加载的按钮关闭效果很好。它有自定义图形。但通过编程创建的按钮b不能点击——当我点击它时,它的图形不会改变。一般来说,按钮b是测试用的,我知道。这就是我的答案。您没有为它设置
onClick()
,这就是为什么您可以单击
close
,但不能单击
b
。您需要为
b
分配一个
onClick()
,以便它知道如何侦听
单击事件,并知道单击事件时要做什么。在
b
No,No的
onClick()。它有自定义图形。但通过编程创建的按钮b不能点击——当我点击它时,它的图形不会改变。一般来说,按钮b是测试用的,我知道。这就是我的答案。您没有为它设置
onClick()
,这就是为什么您可以单击
close
,但不能单击
b
。您需要为
b
分配一个
onClick()
,以便它知道如何侦听
单击事件,并知道单击事件时要做什么。在
b的
onClick()