我在java中创建一个对话框并在单击按钮时显示它, 在这个对话框中我有一个按钮,如何设置此按钮的OnClickListener? 这段代码显示了我的对话框:
ImageView iv = (ImageView) view.findViewById(R.id.ivTaskPlus);
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Dialog d = new Dialog(getActivity());
d.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
d.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
d.setContentView(R.layout.task_new_layout);
d.show();
}
});
并在task_new_layout.xml中我有这个按钮:
<Button
android:id="@+id/btnSaveTask"
android:layout_marginTop="10sp"
style="@style/btnSuccess"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/save_task"
/>
我为这个按钮创建了一个onClickListener,但它不会工作并且没有错误!!
final View taskView = inflater.inflate(R.layout.task_new_layout, container, false);
Button btnSaveTask = (Button) taskView.findViewById(R.id.btnSaveTask);
btnSaveTask.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e("MGH","clicked");
}
});
答案 0 :(得分:1)
您应该使用Dialog.findViewById();
而不是让视图膨胀并再次找到您的按钮。
在ImageView
点击列表器
@Override
public void onClick(View view) {
Dialog d = new Dialog(getActivity());
d.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
d.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
d.setContentView(R.layout.task_new_layout);
Button btnSaveTask = (Button) d.findViewById(R.id.btnSaveTask);
btnSaveTask.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e("MGH", "clicked");
}
});
d.show();
}
答案 1 :(得分:1)
您正在重新扩充视图,这会创建Button
的新实例,并且不会在任何地方加载此新实例。 Button
上的Dialog
是一个不同的实例,并且您没有附加任何OnClickListener
。
当您按Button
Dialog
时,您的代码将无法执行。
这样做
@Override
public void onClick(View view) {
Dialog d = new Dialog(getActivity());
d.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
d.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
d.setContentView(R.layout.task_new_layout);
Button myBtn = (Button) d.findViewById(R.id.btnSaveTask);
myBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// your code
}
});
d.show();
}
答案 2 :(得分:-1)
尝试setContentView(taskview)
ImageView iv = (ImageView) view.findViewById(R.id.ivTaskPlus);
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Dialog d = new Dialog(getActivity());
d.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
d.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
d.setContentView(taskView);
d.show();
}
});
final View taskView = inflater.inflate(R.layout.task_new_layout, container, false);
Button btnSaveTask = (Button) taskView.findViewById(R.id.btnSaveTask);
btnSaveTask.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e("MGH","clicked");
}
});