我真的不明白为什么我不能将OnClickListener添加到对话框中的按钮中。我尝试将它添加到onCreate方法中,并在显示对话框之后添加一个侦听器,但没有结果。这是我目前所拥有的..。
对话类
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布局
<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>调用对话框
public void startNewPostActivity(View view) {
final PostDialog postDialog = new PostDialog();
postDialog.showDialog(this);
}编辑:我只是直接从我的主要活动创建对话框,而不是在DialogFragment类中创建对话框。然后,我成功地使onClickListener工作。
发布于 2016-03-13 18:14:50
对话框的视图层次结构在onCreate中不可用。根据DialogFragment的文档,您应该重写onCreateView()以指定对话框的视图层次结构,或者在onCreateDialog()上重写以自己创建对话框。
您对对话框中视图的最早访问是在创建视图层次结构之后,然后您可以找到视图并附加侦听器。onCreate()太早了。
发布于 2016-03-13 18:19:25
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
https://stackoverflow.com/questions/35973815
复制相似问题