将单个变量传递给 newInstance 与将包传递给 newInstance
Passing individual variables vs passing bundle to newInstance
为了将参数传递给片段,我看到最好的做法是使用这样的 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() 的参数保持简短。我从未见过使用后一种方法的示例,我想知道它是否有问题。
一个包可以包含多个值。
您的第一个代码只能向片段发送一个整数值,使用捆绑包您可以在一次调用中发送您需要的所有内容。
这是主要区别。
希望对您有所帮助。
为了将参数传递给片段,我看到最好的做法是使用这样的 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() 的参数保持简短。我从未见过使用后一种方法的示例,我想知道它是否有问题。
一个包可以包含多个值。
您的第一个代码只能向片段发送一个整数值,使用捆绑包您可以在一次调用中发送您需要的所有内容。
这是主要区别。
希望对您有所帮助。