gpt4 book ai didi

android - 在将代码从 Activity 移植到 fragment 时处理对话框

转载 作者:行者123 更新时间:2023-11-30 04:25:24 25 4
gpt4 key购买 nike

在将我的代码从 Activity 移植到 Fragment 时,处理对话框的更好方法是什么。

  • 我是否应该对父 Activity 使用回调并使用接口(interface)在 Activity 中处理 showDialog(int id)?;
  • 我应该使用 DialogFragment 吗?

最佳答案

在我的 fragment 类中编写了 ShowDialog(int id) 和 removeDialog(int id)。

    protected void showDialog(int id) {

AlertDialog dialog = null;
switch (id) {
case SHOWERROR_ID:
dialog = new AlertDialog.Builder(mActivity)
.setTitle(getString(R.string.alert))
.setIcon(R.drawable.error)
.setMessage(d_msg)
.setPositiveButton(getString(R.string.ok),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int whichButton) {
removeDialog(SHOWERROR_ID);
}
})
.setNegativeButton(null,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
}
}).create();
break;
default:
break;
}

if (dialog != null) {
FragmentManager fm = getActivity().getSupportFragmentManager();
FragmentTransaction ftr = fm.beginTransaction();

CustomDialogFragment newFragment = CustomDialogFragment
.newInstance(dialog);

DialogFragment fragmentDialog = (DialogFragment) fm
.findFragmentByTag("" + id);

if (fragmentDialog != null) {
ftr.remove(fragmentDialog);
ftr.commit();

}
newFragment.show(fm, "" + id);
}
}

protected void removeDialog(int pDialogId) {
FragmentManager fm = getActivity().getSupportFragmentManager();
FragmentTransaction ftr = fm.beginTransaction();
DialogFragment fragmentDialog = null;

fragmentDialog = (DialogFragment) fm.findFragmentByTag("" + pDialogId);

if (fragmentDialog != null) {
FragmentTransaction f = ftr.remove(fragmentDialog);
f.commit();
}
}

protected static class CustomDialogFragment extends DialogFragment {
private Dialog mDialog;

public static CustomDialogFragment newInstance(Dialog dialog) {
CustomDialogFragment frag = new CustomDialogFragment();
frag.mDialog = dialog;
return frag;
}

public Dialog onCreateDialog(Bundle savedInstanceState) {
return mDialog;
}
}

关于android - 在将代码从 Activity 移植到 fragment 时处理对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8629341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com