首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CustomDialog按钮OnClickListener不工作

CustomDialog按钮OnClickListener不工作
EN

Stack Overflow用户
提问于 2016-03-13 18:06:19
回答 2查看 68关注 0票数 0

我真的不明白为什么我不能将OnClickListener添加到对话框中的按钮中。我尝试将它添加到onCreate方法中,并在显示对话框之后添加一个侦听器,但没有结果。这是我目前所拥有的..。

对话类

代码语言:javascript
复制
    public class PostDialog extends DialogFragment{

    EditText textContent;
    Button sButton;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        sButton= (Button) getDialog().findViewById(R.id.sButton);
        sButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //do something here

                getDialog().dismiss();
            }
        });
    }

    public void showDialog(Activity activity) {
        final Dialog dialog = new Dialog(activity);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(R.layout.dialog_new_post);
        //dialog.show();

        WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
        lp.copyFrom(dialog.getWindow().getAttributes());
        lp.width = WindowManager.LayoutParams.MATCH_PARENT;
        //lp.height = WindowManager.LayoutParams.MATCH_PARENT;
        dialog.show();
        dialog.getWindow().setAttributes(lp);
    }

}

DialogXML布局

代码语言:javascript
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:minHeight="400dp">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="top"
        android:inputType="textMultiLine"
        android:lines="11"
        android:textColor="@color/colorGreyDark"
        android:background="@drawable/new_post_background"
        android:textColorHint="@color/colorGreyDark"
        android:hint="@string/share_hint"
        android:padding="@dimen/general_margin"
        android:id="@+id/newPostEditText"
        android:layout_above="@+id/sButton" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="@string/new_post_button"
        android:textColor="@color/colorGreyDark"
        android:id="@+id/sButton"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true" />


</RelativeLayout>

调用对话框

代码语言:javascript
复制
public void startNewPostActivity(View view) {
    final PostDialog postDialog = new PostDialog();
    postDialog.showDialog(this);
}

编辑:我只是直接从我的主要活动创建对话框,而不是在DialogFragment类中创建对话框。然后,我成功地使onClickListener工作

EN

回答 2

Stack Overflow用户

发布于 2016-03-13 18:14:50

对话框的视图层次结构在onCreate中不可用。根据DialogFragment的文档,您应该重写onCreateView()以指定对话框的视图层次结构,或者在onCreateDialog()上重写以自己创建对话框。

您对对话框中视图的最早访问是在创建视图层次结构之后,然后您可以找到视图并附加侦听器。onCreate()太早了。

票数 0
EN

Stack Overflow用户

发布于 2016-03-13 18:19:25

代码语言:javascript
复制
sButton= (Button) dialog.findViewById(R.id.sButton);
sButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //do something here

                dialog.dismiss();
            }
        });

将以上代码放入您的showDialog(活动活动)方法中。

注意:假设dialog_new_post.xml文件中有sButton

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35973815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档