【问题标题】:Passing data from Fragment to DialogFragment将数据从 Fragment 传递到 DialogFragment
【发布时间】:2019-06-07 10:43:47
【问题描述】:

当我收到 Volley 错误并告诉用户重试时,我试图显示一个对话框,因此我选择了一个 dialogFragment 以便能够对其进行自定义。

我在 Fragment 类中处理如下错误:

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();
                }

实际上,我只能根据错误类型显示 Toast 消息。

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

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

编辑: 检索值:

在dialogFragment的onCreateView中:

errorTextView.setText(getArguments().getString("vErr"));

【问题讨论】:

标签: android android-fragments bundle android-alertdialog


【解决方案1】:

你在收货吗

 onCreate(){
 getArguments
}

NetworkErrorDialogFragment 的?

【讨论】:

  • 不,onCreateView 我将 textView 消息设置为 getArguments().getString("vErr"))
  • 不建议但可以,你能在onCreate里面调试吗
  • 我的 dialogFragment 没有那个方法。我没有覆盖它
  • 会有什么不同吗?
  • 你告诉我,反正这是一个很简单的问题,做一些调试你会发现这个问题
【解决方案2】:

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;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 2021-05-12
    相关资源
    最近更新 更多