2014-01-27 75 views
0

我有一個片段,其中我接收消息,其中,寫入到一個消息對象demoRxMsg使用的片段的對象在另一個片段

在接收器線程我請demoRxMsg = new MessageStructure();數據被接收並寫入,一切很好。

現在我想在另一個Fragment中使用demoRxMsg來讀出包含的數據並將它們「轉換」爲一個很好的UI元素。

問題是:我該如何做到這一點。我試着寫一個getter,但是當我通過

demoRxMsg = ((Diagnostics) getActivity()).getMessage(); 

調用它,我得到Cannot cast from Activity to Diagnostics。 是因爲片段不是活動嗎?但片段(正如我理解片段教程)是活動的一部分,不是嗎?

我希望有人能幫助:)

+0

類型是MessageStructure,它是一個自定義類 – Fraggles

+0

在這種情況下,它說:的getMessage()是未定義類型Activity – Fraggles

回答

1

片段是不是一種活動,它的活動的一部分,意味着他們一起工作,沒有活動,如果你想使用片段將無法正常工作等

您在另一個片段的數據,你需要使用捆綁

Bundle b = new Bundle(); 
b.putInt("my_data",YourData); 

YourFragment f = new YourFragment(); 
f.setArguments(b); 

而在你的片段中獲取價值,

Bundle b = getArguments(); 
int v = b.getInt("my_data",0); 

如果它是要傳遞一個對象,你需要序列化和碎片再次反序列化

+0

是這樣的:b.putInt(「message」,demoRxMsg); ? – Fraggles

+1

int是一個例子,如果demoRxMsg的類型是int,是的,你可以這樣做,否則你需要適當的類型,如果它是你創建的自定義類,則需要使用parcelable –

+0

好吧,聽起來不錯:)我會試試看,謝謝 – Fraggles

0
Bundle bundle = new Bundle(); 
    bundle.putParcelableArrayList(key, value)// The value arrayList object must be a parcel able object 
    fm = getFragmentManager(); 
    if (fm != null) { 
     FragmentTransaction ft = fm.beginTransaction(); 
     frag.setArguments(bundle); 
     ft.replace(R.id.fragment_main_container, frag, tag); 
     ft.commit(); 
    } 
+0

Bundle類型中的putParcelable(String,Parcelable)方法不適用於參數(String,MessageStructure)。演員不能。 – Fraggles

+0

putParcelableArrayList()用於傳遞自定義對象的arrayList。 – Droidee

相關問題