2014-04-10 33 views
0

在java/android API中是否有任何「技巧」與static或其他內容同時改變片段中具有相同ID的對象中的文本?在鏈接片段中「鏈接」對象的文本

假設我有一個靜態的字符串:

private static String buttonText = "Today"; 

每個片段有一個按鈕:

Button mButton = (Button) getView().findViewById(R.id.change_button); 
mBotton.setText(buttonText); 

要改變對片段的文字我做的:

buttonText = "Tomorrow"; 
mBotton.setText(buttonText); 

燦我自動將文本更改爲其他片段?保持List<Button>我的唯一方法(循環列表並設置每個文本)?

+1

你知道「觀察者模式」 - > http://developer.android.com/reference/java/util/Observer.html – Fildor

+0

@Fildor Nope。現在看。使用昂貴嗎? – Diolor

+0

不,它不貴。 [Observable](http://developer.android.com/reference/java/util/Observable.html)類爲您提供了所需的大部分內容。 – Fildor

回答

0

也許這正是你所需要的:http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity

您可以構建一個適合你,這需要一個完美的Oberserver的行爲。

  1. 您創建一個接口,我們稱之爲OnButtonTextChangeListener定義的方法void onButtonTextChangeWanted(String buttontext)

  2. 你有你的活動實現這個接口和你的片段確保活動它們加入到這樣做。 (全部在鏈接文章中描述) 在該實現中,您更改了包含按鈕文本的Activity的成員,然後通知所有已註冊的更改片段,例如通過調用片段上的方法changeButtonText(buttontext)來完成在你的問題中寫道:改變那​​個片段上的按鈕。通過這種方式,您可以通過附加的活動將channge分發給所有片段。

可能有更好的解決方案。我的Android有點生鏽...

+0

您的「觀察者模式」解決方案很好。我創建了自己的類來擴展'Button'類並實現'Observer'。我將每個按鈕添加到一個'ObservedObject'類中,該類擴展了Observable並具有公共方法setValue(String value){setChanged(); notifyObservers(值); }'。當我想要改變這個值時,我調用了'setValue'。所有的片段總是「在那裏」(=創建),所以我不必擔心nullPointers。 – Diolor