2014-01-29 50 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); 

    } 

} 
相關問題