这是一般的Dialog Fragment类,我将参数设置为bundle
public class GeneralDialogFragment extends BaseDialogFragment<GeneralDialogFragment.OnDialogFragmentClickListener> {
public interface OnDialogFragmentClickListener {
public void onClicked(GeneralDialogFragment dialogFragment);
public void onCancelClicked(GeneralDialogFragment dialogFragment);
}
public static GeneralDialogFragment newInstance(String title, String message) {
GeneralDialogFragment dialog = new GeneralDialogFragment();
Bundle args = new Bundle();
args.putString("title ", title);
args.putString("message", message);
dialog.setArguments(args);
return dialog;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setTitle(getArguments().getString("title"))
.setMessage(getArguments().getString("message"))
.setCancelable(false)
.create();
}
}
这就是我在活动中调用它的方式
GeneralDialogFragment generalDialogFragment = new GeneralDialogFragment();
generalDialogFragment.newInstance("Test", "Its working good");
generalDialogFragment.show(getFragmentManager(), "dialog");
但是在setTitle(getArguments()。getString(“title”))中我在onCreateDialog上得到一个空指针异常
答案 0 :(得分:1)
方法newInstance
是静态的,您不需要创建一个对象来引用它。
您应该致电newInstance
并获得对话框的参考:
GeneralDialogFragment generalDialogFragment = GeneralDialogFragment.newInstance("Test", "Its working good");
generalDialogFragment.show(getFragmentManager(), "dialog");
答案 1 :(得分:1)
正如Juan Cruz Soler所说,问题在于你如何使用export const Items = ({icon, title}: LinkedItemProps) => (
<div>
<div className="nav-menu-link-icon">
{icon}
</div>
<div className="nav-menu-link-label">
{title}
</div>
</div>
)
。然而,还有第二个问题。
在newInstance()
内你有这一行:
newInstance()
然后尝试使用args.putString("title ", title);
中的这一行从Bundle
参数中读取标题:
onCreateDialog()
这不会起作用,因为你的钥匙不匹配。即使它只是空格,.setTitle(getArguments().getString("title"))
和"title "
也不是同一个字符串。删除"title"
来电中"title "
的空格,这将是固定的。