我知道这是以前问过的,但是我不太了解如何实现它。
我有一个片段“myFragment”,在其中创建“myDialogueFragment”的对象。
当我从myFragment调用它时,我想将一些值传递给myDialogueFragment。
我有一个整数num,我想传递给myDialogueFragment并将该数字与myDialogueFragment中的一些其他信息一起存储在本地数据库中。

我可能会弄错了,但是我所看到的所有代码都是关于将数据从myDialogueFragment发送回myFragment,这并不是我真正想要的。

static MyDialogFragment newInstance(int num) {

MyDialogFragment f = new MyDialogFragment();

// Supply num input as an argument.
Bundle args = new Bundle();
args.putInt("num", num);
f.setArguments(args);

return f;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mNum = getArguments().getInt("num");
    ...
}

因此,此代码获取myFragment onCreate()方法中的参数。我想在myFragment()中发送参数,并在myDialogueFragment中接收它们。

我该如何实现?

最佳答案

您需要的是在片段上设置setArguments,如下所示:

Bundle args = new Bundle();
args.putString("key", "value");
DialogFragment newFragment = new YourDialogFragment();
newFragment.setArguments(args);
newFragment.show(getSupportFragmentManager(), "TAG");

您现在要做的就是在片段中捕获这些参数并使用它们...

在对话片段中,您像这样阅读...
Bundle mArgs = getArguments();
String myValue = mArgs.getString("keyUsed to send it...");

07-24 17:29