我知道这是以前问过的,但是我不太了解如何实现它。
我有一个片段“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...");