如何使用 FAB 点击显示自定义对话框?

我尝试使用布局创建自定义对话框。我还没有在对话框中添加任何功能。目前,我正在尝试通过从 MainActivity 中单击 FAB 来启动它。


这是我的自定义对话框:


public class GenerateDialog extends Fragment implements DialogInterface.OnCancelListener, DialogInterface.OnDismissListener {


    @Nullable

    @Override

    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        return inflater.inflate(R.layout.dialog_layout, container, false);

    }


    ...

}

这是我的MainActivity。我不知道我应该如何在onClick. 我尝试使用意图,但将对话框转换为活动时出错:


public class MainActivity extends AppCompatActivity {

    ...

    GenerateDialog generateDialog;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        ...


        generateDialog = new GenerateDialog();


        floatingActionButton.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                // Show GenerateDialog


            }

        });

    }

}


牛魔王的故事
浏览 102回答 3
3回答

月关宝盒

完成类似的操作后,您的对话框类应该扩展 Dialog 而不是 Fragment。它应该是:public class GenerateDialog extends Dialog然后在构造函数上膨胀它:public class GenerateDialog extends Dialog {public GenerateDialog(@NonNull Context context) {        super(context, android.R.style.Theme_NoTitleBar_Fullscreen);        setContentView(R.layout.dialog_layout);    } … }在您的 FAB 侦听器上,在您启动对象后,您可以调用 show()(如果您的对象名为 generateDialog,则generateDialog.show();在实例化它后执行,因为它是显示对话框所必需的)。菲:public class MainActivity extends AppCompatActivity {    ...    GenerateDialog generateDialog;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ...        generateDialog = new GenerateDialog(this);        floatingActionButton.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                generateDialog.show();            }        });    }}

守着一只汪

你可以像这样显示你的对话框public class CustomDialog extends Activity {    private static Context context;    private static Dialog dialog;    public static void dialog(final Context ctxt, final String calledBy,                              String title, String message, String buttonText) {        context = ctxt;        if( dialog != null && dialog.isShowing() ) return;        dialog = new Dialog(context);        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);        dialog.getWindow().setBackgroundDrawableResource(R.color.transparent);        dialog.setCancelable(false);        dialog.setCanceledOnTouchOutside(false);        dialog.setContentView(R.layout.custom_dialog_single_button);        TextView txtTitle = dialog.findViewById(R.id.txtTitle);        TextView txtMessage = dialog.findViewById(R.id.txtMessage);        TextView tvOK = dialog.findViewById(R.id.tvOK);        txtTitle.setText(title);        txtMessage.setText(message);        tvOK.setText(buttonText);        dialog.show();    }像这样称呼它CustomDialogSingleButton.dialog(context,                        Constants.SYNC_FILES                        , context.getResources().getString(R.string.sync_files_title),                        context.getResources().getString(R.string.sync_files_msg), "OK");只需尝试此代码,您的对话框就会出现

浮云间

对话框片段的代码public class MyCustomDialog extends DialogFragment{ @Overridepublic void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setStyle(android.app.DialogFragment.STYLE_NORMAL, android.R.style.Theme_Black_NoTitleBar);}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,                         Bundle savedInstanceState) {View v = inflater.inflate(R.layout.dialog_view, container, false);return v;}}并从您的活动中调用此 MyCustomDialog ,如下所示, MyCustomDialog dialog = new MyCustomDialog(); Bundle args = new Bundle(); FragmentTransaction ft = getFragmentManager().beginTransaction(); dialog.show(ft, MyCustomDialog.TAG);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java