2014-05-12 171 views
0

我需要將活動片段的int值傳遞給另一個片段。這些數據將被設置爲一個開關的情況下,這將決定哪個android佈局文件將附加到片段。將活動片段的int值傳遞給另一片段

這是從基體活性和其設定值要傳遞的片段的代碼:

Fragment fragment = new otherFragment(); 
Bundle bundle = new Bundle(); 
bundle.putInt(key, value); 
fragment.setArguments(bundle); 

順便說一句,我也試圖把上面的代碼的片段的OnCreate和onCreateView方法但仍然是相同的輸出。然後設定該片段和該束後,我切換到另一個活動並在這裏的是,將獲得並使用int值的代碼:

Bundle bundle = this.getArguments(); 
int myInt = bundle.getInt(key, defaultValue); 

還試圖

savedInstanceState = this.getArguments(); 
int type = savedInstanceState.getInt(key, defaultValue); 

從基部活動時,錯誤是空指針異常,並且從第一個片段開始,錯誤是找不到資源。

05-12 14:50:47.732: E/ERRORSKI(814): java.lang.NullPointerException 
05-12 14:41:38.542: E/ERRORSKI(798): android.content.res.Resources$NotFoundException: String resource ID #0x1 

謝謝。

+0

更好地使用sharedpreference –

+0

@BirajZalavadia謝謝,但我不會使用這種方式的數據。 –

回答

3

使用默認構造函數創建一個片段通常不是要走的路。 以下是您可以更好地創建片段的新實例並傳遞整數的示例。

將此代碼放置在您要創建的片段中。

public class ExampleFragment { 
    public static ExampleFragment newInstance(int exampleInt) { 
     ExampleFragment fragment = new ExampleFragment(); 

     Bundle args = new Bundle(); 
     args.putInt("exampleInt", exampleInt); 
     fragment.setArguments(args); 

     return fragment; 
    } 
} 

在您的活動中使用它來創建新的片段。

Fragment exampleFragment = ExampleFragment.newInstance(exampleInt); 

然後在你的片段中,使用類似的東西來獲得你的整數。

getArguments().getInt("exampleInt", -1); 
+0

@Lei Leyba使用newInstance方法,您的代碼中有一個地方告訴應該如何實例化某個片段,而不是每次寫入該Bundle代碼。這也是您應用程序其他部分的某種合約,可確保您擁有片段需要正常工作的所有內容。所以使用newInstance通常是一個好習慣。 – Siebe

相關問題