片段需要有一个无参数构造函数 - 如果我的Fragment需要参数怎么办?

时间:2014-01-29 12:44:44

标签: android android-fragments

我在引用Google的documentation

  

Fragment的所有子类都必须包含一个公共空构造函数。   框架通常会在需要时重新实例化一个片段类,   特别是在状态恢复期间,需要能够找到这个   构造函数来实例化它。

如果片段需要参数会发生什么?假设我使用非参数c'tor创建了片段的实例,然后将片段添加到Activity中。 Android将如何知道状态恢复?或者我应该手动处理它(如果参数是复杂的视图模型,我可能不会这样做)?

1 个答案:

答案 0 :(得分:1)

您需要使用参数传递一个Bundle,如下所示:

class MyFragment extends Fragment{
   private static final String MY_FIELD = "myfield";


    public static MyFragment newInstance(int param){
        MyFragment result = new MyFragment();
        Bundle args = new Bundle();
        args.putInt(MY_FIELD, param);
        result.setArguments(args);
        return result;
    }


    ...


    private void myMethod(){
        int myField = getArguments.getInt(MY_FIELD);

    }

}