传递单个变量与传递bundle到newInstance

时间:2015-10-30 16:05:10

标签: android constructor fragment bundle

为了将参数传递给片段,我认为最好的做法是使用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()的参数简短。我从未见过使用后一种方法的例子,我想知道它是否有问题。

1 个答案:

答案 0 :(得分:3)

一个包可以包含多个值。

您的第一个代码只能向片段发送一个整数值,使用您可以在一次通话中发送所需内容的捆绑包。

这是主要区别。

希望这有帮助。