簡體   English   中英

如何將 boolean 值從 DialogFragment 傳遞到 Android 中的另一個片段?

[英]How do I pass a boolean value from a DialogFragment to another Fragment in Android?

我正在嘗試這樣做,以便清除按鈕打開一個警報對話框,其中包含是或否。 單擊是按鈕時,它應該將一個布爾值從對話框片段傳遞給另一個片段。 如果該值為真(單擊“是”時應該為真),它將調用將清除數據庫的方法。 這是對話片段和我試圖實現它的片段的一部分。 我無法讓對話框出現,但到目前為止它確實使屏幕變暗,我認為這意味着我沒有正確連接它。

對話框片段:

public class DialogClear extends DialogFragment {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState){
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        LayoutInflater inflater = getActivity().getLayoutInflater();
        View dialogView = inflater.inflate(R.layout.clear_dialog, null);
        final Button yes = dialogView.findViewById(R.id.yes);
        final Button no = dialogView.findViewById(R.id.no);

        no.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dismiss();
            }
        });

        yes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dismiss();
            }
        });

        return builder.create();
    }

}

這是我試圖從我的碎片中調用它的方式

       clearButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dialogClear = new DialogClear();
                dialogClear.setTargetFragment(BloodPressureFragment.this, 1);
                dialogClear.show(getFragmentManager(),"");

                    dataManager.clearDatabase();
                    dataManager.createDatabase();
                    dataText.setText("");
                    dataText.setBackgroundResource(R.drawable.no_border);
                    updateList();
                }

        });

歡迎來到代碼派對

你有很多選擇來完成這項工作,但我會向你展示使用片段的最佳方式。

如您所知,所有片段都在一個活動中發生變化並從中擴展。

所以簡單的方法是這樣的:

1.在你的活動中建立公共領域

2.在activity上構建一個getInstant方法

3.填充並從您希望在此顯示的任何片段中獲取該活動的值

看這個例子:

public boolean isLocationOn;

該字段現在在活動中構建:在任何片段中:

MainActivity.getInstance().isLocationOn = true;

在其他片段中:

if(MainActivity.getInstance().isLocationOn){

 //todo show map or ...
}

這樣你就可以在片段中使用任何東西

在評論中更新我

你應該閱讀並嘗試使用 3 件事來解決這個問題。

1. 導航組件

  • 易於導航到片段和 DialogFragment

2. 查看Model

  • 在活動的不同片段之間共享相同的視圖 Model
  • 方向改變時數據不會丟失
  • 所有業務邏輯集中在一處,易於單元測試

3. 實時數據

  • 推薦用於響應式 ui
  • 簡單易懂的Api

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM