如何创建自定义 Material 对话框
How to create custom Material Dialog
我想知道如何为我的应用程序创建自定义 material 对话框。具体来说,我需要实现这样的目标
我一直在用这样的老方法:
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.custom);
dialog.setTitle("Sample");
Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
// if button is clicked, close the custom dialog
dialogButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
但是,我在点击 button
时出现空指针异常。任何教程对我来说也是一个很大的帮助。
我认为你应该自己制作 class 来扩展 DialogFragment
public class YourDialog extends DialogFragment {
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
LayoutInflater inflater = getActivity().getLayoutInflater();
final View dialogView = inflater.inflate(R.layout.custom, null);
Button dialogButton = (Button) dialogView.findViewById(R.id.dialogButtonOK);
// if button is clicked, close the custom dialog
dialogButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(dialogView);
return builder.create();
}
并在您的 activity 中使用此代码显示对话框
YourDialog yourDialog = new YourDialog();
yourDialog.show(getFragmentManager(), "YOUR_DIALOG_TAG");
写一个扩展到 DialogFragment
的新 class。
public class CustomDialog extends DialogFragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout_dialog,container,false);
getDialog().setTitle("Sample");
Button doneBtn = (Button) mView.findViewById(R.id.done_convert);
doneBtn.setOnClickListener(doneAction);
return view;
}
View.OnClickListener doneAction = new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"Test",Toast.LENGTH_LONG).show();
}
};
}
然后从您的 activity
调用它
FragmentManager fm = getSupportFragmentManager();
CustomDialog custom = new CustomDialog();
custom.show(fm,"");
希望,它会起作用。
我想知道如何为我的应用程序创建自定义 material 对话框。具体来说,我需要实现这样的目标
我一直在用这样的老方法:
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.custom);
dialog.setTitle("Sample");
Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
// if button is clicked, close the custom dialog
dialogButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
但是,我在点击 button
时出现空指针异常。任何教程对我来说也是一个很大的帮助。
我认为你应该自己制作 class 来扩展 DialogFragment
public class YourDialog extends DialogFragment {
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
LayoutInflater inflater = getActivity().getLayoutInflater();
final View dialogView = inflater.inflate(R.layout.custom, null);
Button dialogButton = (Button) dialogView.findViewById(R.id.dialogButtonOK);
// if button is clicked, close the custom dialog
dialogButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(dialogView);
return builder.create();
}
并在您的 activity 中使用此代码显示对话框
YourDialog yourDialog = new YourDialog();
yourDialog.show(getFragmentManager(), "YOUR_DIALOG_TAG");
写一个扩展到 DialogFragment
的新 class。
public class CustomDialog extends DialogFragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout_dialog,container,false);
getDialog().setTitle("Sample");
Button doneBtn = (Button) mView.findViewById(R.id.done_convert);
doneBtn.setOnClickListener(doneAction);
return view;
}
View.OnClickListener doneAction = new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"Test",Toast.LENGTH_LONG).show();
}
};
}
然后从您的 activity
调用它FragmentManager fm = getSupportFragmentManager();
CustomDialog custom = new CustomDialog();
custom.show(fm,"");
希望,它会起作用。