[英]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 ...
}
這樣你就可以在片段中使用任何東西
在評論中更新我
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.