如何将数据从片段传递到dialogFragment

phe*_*sou 19 android arguments fragment

我知道以前曾经问过,但我不太明白如何实现它.我有一个片段"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");
    ...
}
Run Code Online (Sandbox Code Playgroud)

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

我怎样才能做到这一点?

Mar*_*res 46

你需要的是在片段上setArguments如下:

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

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

在对话片段中你读它就像这样......

Bundle mArgs = getArguments();
String myValue = mArgs.getString("keyUsed to send it...");
Run Code Online (Sandbox Code Playgroud)