将数据从片段传递到DialogFragment

时间:2019-06-07 10:43:47

标签: android android-fragments bundle android-alertdialog

当我遇到Volley错误时,我试图显示一个对话框,并告诉用户再次重试,所以我选择一个dialogFragment以对其进行自定义。

我正在Fragment类中按照以下方式处理错误:

  Query query1 = entityManager.createQuery("select * from ActSubT 
  where (ActSubT.unsub_dt - ActSubT.sub_dt) <:days").setParameter("days", 
   100);

实际上,我只能显示每种错误类型的Toast消息。

以下,我试图将消息作为参数传递,但似乎不起作用。

if (vError instanceof TimeoutError || vError instanceof NoConnectionError) {
                    Toast.makeText(getContext(),
                            Objects.requireNonNull(getActivity()).getString(R.string.error_network_timeout),
                            Toast.LENGTH_LONG).show();
                } else if (vError instanceof AuthFailureError) {
                    Toast.makeText(getContext(),
                            Objects.requireNonNull(getContext()).getString(R.string.error_network_auth_error),
                            Toast.LENGTH_LONG).show();
                } else if (vError instanceof ServerError) {
                    Toast.makeText(getContext(),
                            Objects.requireNonNull(getContext()).getString(R.string.error_network_server_error),
                            Toast.LENGTH_LONG).show();
                } else if (vError instanceof NetworkError) {
                    Toast.makeText(getContext(),
                            Objects.requireNonNull(getContext()).getString(R.string.error_network_network_error),
                            Toast.LENGTH_LONG).show();
                } else if (vError instanceof ParseError) {
                    Toast.makeText(getContext(),
                            Objects.requireNonNull(getContext()).getString(R.string.error_network_parse_faillure),
                            Toast.LENGTH_LONG).show();
                }

编辑: 检索值:

在dialogFragment的onCreateView中:

Bundle args = new Bundle();
args.putString("vErr", "vErr");
DialogFragment errFragment = new NetworkErrorDialogFragment();
errFragment.setArguments(args);
errFragment.show(getFragmentManager(), "NetErrDialogFragment");

2 个答案:

答案 0 :(得分:0)

您在

收到吗?
 onCreate(){
 getArguments
}

是NetworkErrorDialogFragment吗?

答案 1 :(得分:0)

DialogFragment使用onCreateDialog()方法创建对话框及其内容视图。因此您需要重写此方法并为其设置适当的内容视图:

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        Dialog dialog =new AppCompatDialog(getContext(), getTheme());
        dialog.setContentView(R.layout.some_content_view);
        // retreiving arguments here
        TextView errorTextView = dialog.findViewById(errorTextViewId);
        errorTextView.setText(getArguments().getString("vErr"));
        return dialog;
    }