亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 FAB 點擊顯示自定義對話框?

如何使用 FAB 點擊顯示自定義對話框?

牛魔王的故事 2022-11-02 10:00:12
我嘗試使用布局創建自定義對話框。我還沒有在對話框中添加任何功能。目前,我正在嘗試通過從 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            }        });    }}
查看完整描述

3 回答

?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

完成類似的操作后,您的對話框類應該擴展 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();

            }

        });

    }

}


查看完整回答
反對 回復 2022-11-02
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

你可以像這樣顯示你的對話框


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");

只需嘗試此代碼,您的對話框就會出現


查看完整回答
反對 回復 2022-11-02
?
浮云間

TA貢獻1829條經驗 獲得超4個贊

對話框片段的代碼


public class MyCustomDialog extends DialogFragment{


 @Override

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setStyle(android.app.DialogFragment.STYLE_NORMAL, android.R.style.Theme_Black_NoTitleBar);

}


@Override

public 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);


查看完整回答
反對 回復 2022-11-02
  • 3 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號