【问题标题】:Why I can not set onClickListener for a button in a dialog view?为什么我不能为对话框视图中的按钮设置 onClickListener?
【发布时间】:2011-09-30 12:46:16
【问题描述】:

我有一个自定义对话框,如下所述。

我的自定义对话框布局 (*my_dialog.xml*),只包含一个“关闭”按钮:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"

     >

         <Button
            android:id="@+id/dismiss_btn"
            android:layout_width="100dip"
            android:layout_height="30dip"
            android:layout_centerHorizontal="true"
            android:text="Dismiss me"
            android:textSize="8dip"
            android:textColor="#ffffff"
             />
     </RelativeLayout>

我的对话框视图类:

 public class MyDialog extends Dialog{

        public MyDialog(Context context){
            super(context);
        }


        @Override
        protected void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.my_dialog);

                 Button dismissMeBtn = (Button)findViewById(R.id.dismiss_btn);

                /** ERROR Message when set onClickListener below (throw by eclipse editor)**/

               //     The method setOnClickListener(View.OnClickListener) in the 
                //    type View is not applicable for the arguments (new DialogInterface.OnClickListener(){})

                dismissMeBtn.setOnClickListener(new OnClickListener() { 
                    @Override
                    public void onClick(View v) {
                         MyDialog.this.dismiss(); 
                    }
                  });

            getWindow().setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        }


    }

正如上面的代码,我在对话框上有一个“*dismiss_btn*”按钮,我想在按下关闭按钮时关闭对话框,但我在我的setOnClickListener 用于关闭按钮时的代码(如代码中所示)。

错误信息(eclipse编辑器抛出的错误):

View类型中的setOnClickListener(View.OnClickListener)方法不适用于参数(new DialogInterface.OnClickListener(){})

为什么我得到了错误?为什么我不能为对话框视图中的按钮设置 onClickListener?

【问题讨论】:

    标签: android android-layout android-emulator android-widget android-manifest


    【解决方案1】:

    因为 eclipse 认为它是 DialogInterface onClickListener 但你需要一个 View onClickListener 所以它会是

                    dismissMeBtn.setOnClickListener(new View.OnClickListener() { 
                    @Override
                    public void onClick(View v) {
                         MyDialog.this.dismiss(); 
                    }
                  });
    

    【讨论】:

    【解决方案2】:

    那是因为你在DialogInterface 的上下文中,它自己有OnClickListener 接口。

    你的代码应该是:

    dismissMeBtn.setOnClickListener(new View.OnClickListener() { 
        @Override
        public void onClick(View v) {
             MyDialog.this.dismiss(); 
        }
    });
    

    【讨论】:

      【解决方案3】:

      您的导入似乎有问题。 当您尝试创建新的 OnClickListener 时,您正在调用 DialogInterface.OnClickListener 的构造函数,这不是 Button 所需的 OnClickListener(可能是由于 import android.content.DialogInterface.OnClickListener

      尝试使用new View.OnclickListener(){ ... } 或将导入替换为import android.view.View.OnClickListener,应该没问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-22
        • 2020-03-13
        相关资源
        最近更新 更多