2014-01-29 52 views
0

我引用谷歌的documentation片段需要有一个无参数的构造函数 - 如果我的片段需要参数?

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

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

+0

另一个线程并没有真正回答如何对待像一个视图模型复杂的参数不能被序列化,并创建拥有的活动。 – Krumelur

+0

你应该在你的问题中提到你的模型不能被序列化。顺便说一下,你需要传递什么样的数据? – fasteque

+0

@fasteque我以为我做到了。见最后一句。但是如果参数不能被序列化,解决方案是什么? – Krumelur

回答

1

你需要用的参数传递给它一个捆绑,像这样:

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); 

    } 

} 
相关问题