将单个变量传递给 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() 的参数保持简短。我从未见过使用后一种方法的示例,我想知道它是否有问题。

一个包可以包含多个值。

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

这是主要区别。

希望对您有所帮助。