为了将参数传递给片段,我认为最好的做法是使用newInstance()方法:
public static MyFragment newInstance(int myInt) {
MyFragment myFragment = new MyFragment();
Bundle args = new Bundle();
args.putInt("myInt", myInt);
myFragment.setArguments(args);
return myFragment;
}
,这将被实例化:
int myInt = 123;
MyFragment myFragment = MyFragment.newInstance(myInt);
如果我需要传递更多变量,那么我将不得不追加我添加到newInstance()方法的任何内容。例如,如果我也传递一个字符串,那么我的newInstance()方法将类似于:
public static MyFragment newInstance(int myInt, String myStr) {
// code to put the int AND the string into the bundle
}
现在我的问题是:上面和下面的方法有什么区别,它通过了捆绑包?
public static MyFragment newInstance(Bundle args) {
MyFragment myFragment = new MyFragment();
myFragment.setArguments(args);
return myFragment;
}
实例化:
int myInt = 123;
Bundle args = new Bundle();
args.putInt("myInt", myInt);
MyFragment myFragment = MyFragment.newInstance(args);
我一直在使用后一种方法,所以我可以保持newInstance()的参数简短。我从未见过使用后一种方法的例子,我想知道它是否有问题。
答案 0 :(得分:3)
一个包可以包含多个值。
您的第一个代码只能向片段发送一个整数值,使用您可以在一次通话中发送所需内容的捆绑包。
这是主要区别。
希望这有帮助。