【问题标题】:Passing data from dialogfragment to fragment将数据从对话片段传递到片段
【发布时间】:2013-08-12 22:25:18
【问题描述】:

我得到了一个包含三个片段的活动,我从其中一个片段中调用了一个 MyDialogFragment.show() 方法。出现对话框,我做了一些文本输入并尝试将此文本输入传递回片段。到目前为止一切顺利。

我通过“父”片段的 onActivityResult() 结合 set/getTargetFragment() 调用设置了反向通信(参见下面的代码)。我确实在我的父片段中得到了这个结果,但我无法传递一些数据。每次创建意图并将一些额外数据放入其中的尝试都会失败。我不知道我是盲人还是这样……但我不应该能够在 onClick() 方法中创建意图吗?!

任何帮助表示赞赏!

在我的对话框片段中:

public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getParentFragment().getActivity());
    LayoutInflater inflater = getActivity().getLayoutInflater();
    builder.setView(inflater.inflate(R.layout.dialog_choose_title, null));

    builder.setTitle(mTitle)
            .setPositiveButton(R.string.dialog_save_title, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Intent intent = new Intent(getParentFragment().getActivity(), MyMainClass.class);
                    intent.putExtra("title", mEditText.getText().toString());
                    getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, intent);
                    dismiss();
                }
            })
            .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dismiss();
                }
            });
    return builder.create();
}

在我的片段中:

public void onClick(View v) {
            ChooseTitleDialog dialog = ChooseTitleDialog.newInstance(mTimerObject.getmTitle());
            dialog.setTargetFragment(mThis, 42);
            dialog.show(mFragmentMgr, "choose_title_dialog");
        }

【问题讨论】:

  • 你正在对话片段中创建意图,你在哪里阅读它?
  • 哦,对不起。没说清楚。当我尝试添加一些数据时,我已经获得了 NPE。所以创作似乎失败了。
  • 你能发布 logcat 错误
  • 男人^^ thx!有时你只是看不到明显的东西,你不得不再次被推到它,直到你看到它。 mEditText-TextView 是另一个实现的遗留物,我只是没有得到它。
  • 我想我应该删除这个问题,嗯?与这个问题完全没有关系。

标签: android android-intent fragment dialogfragment


【解决方案1】:

而且我有点瞎! 在创建意图并考虑正确的上下文(getActivity()、getParentFragment().getActivity()、...)或其他可能性来创建对我的片段的回调时,我并没有浪费一秒钟时间思考错误的其他一些原因。因此,我尝试从 (mEditText) 获取文本的 EditText-Element 未初始化:\

进行一些修改以使其工作:

View v = inflater.inflate(R.layout.dialog_choose_title, null);
mEditText = (EditText) v.findViewById(R.id.id_edit_choose_title);
mEditText.setText(mTitle);
builder.setView(v);

感谢您抽出时间 Gokhan!

【讨论】:

    猜你喜欢
    • 2017-07-21
    • 2013-07-11
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多