2013-06-24 70 views
3

我有兩個活動。第一個有一些佈局,第二個有開關/切換。我想要做的是當我更改第二個活動的切換以隱藏第一個活動的佈局。 現在,我知道我可以使用SharedPreferences,但是我發現很難相信我不能在另一個活動中引用某個活動。 例如:howcan我在活動B中調用活動A的方法? 如何修改活動B中的活動A的textView?就像在活動B中按下一個按鈕,直接在活動A中更改textView,而不是通過SharedPreferences或類似的東西。 是不是有一些方法可以參考它? 我可能會需要這樣做,我不能相信這是不可能的。從另一個活動更改

在此先感謝,祝你有美好的一天!

回答

1

你可以使用下面的庫來做你想做的和更多的事情。它來自Square Inc.,它很棒。由於它的描述說,「奧托是一個事件總線設計,溝通有效地分離應用程序的不同部分,同時仍然允許他們。

http://square.github.io/otto/

如果你不想使用它,你可以輕鬆使用​​。您可以從一個Activity發送廣播,並使用BroadcastReceiver從另一個廣播中接收廣播,並相應地更新用戶界面。您也可以在廣播中使用Intents發送數據,以便您可以從其他Activity瞭解您想要更改的內容。

+0

請至少包括該庫對該鏈接的目標所做的總結性描述。 –

1

您可以使用startActivityForResult開始活動B,並且在用戶完成編輯選項後,您可以返回到A並使用Intent將其發送回您的數據。

編輯: 你也可以使用一個singleton使用時,單例存儲一些值,並在所有的活動對它們的訪問,但請注意,你可以做內存泄漏..

+0

通過putExtra的意圖,對吧? –

+0

是的,那應該是該方法:) .. – Cata

1

這絕對是可能使用BroadcastReceiver。在第一個活動中註冊BroadcastReceiver,以偵聽您想要發送給它的各種廣播以更新其UI,並在第二個活動中按下按鈕時發送這些廣播。您可以使用包通過廣播發送數據。

1

案例1:要在開始從A發送一些數據B

。只需使用Intent.putExtra即可傳遞數據。從B識別數據和做事

案例2:你想要做一些任務AB完成

。剛開始B使用startActivityForResultAB完成onActivityResult將被調用。

情況下3:

你想傳遞的信息(或命令調用一個方法)在兩者之間運行活動。您可以使用BroadcastMessage(或LocalBroadCastMessage)將廣播發送到其他活動。閱讀消息按照指示進行操作

1

您似乎對Activities是什麼以及它們是如何工作有些誤解。該活動是您的應用程序的「孤立」部分,通常包含當前窗口及其內容。以這種方式使用的每個活動都會跟蹤其自己的數據,並使用IntentsBroadcasts與其他活動進行交互。如您所述,活動還可以訪問SharedPreferences中的共享數據,但也可以訪問文件或Application(或單件)中的共享數據。您不能在另一個Activity中調用非靜態方法,因爲不能保證該Activity在當前存在。

如果你想要做的是保持兩個「活動」同時活動並且經常互相交流,你應該切換到Fragment s。您可以在一個Activity中擁有多個Fragments,並且可以更自由地交互(首選方法是通過Activity進行通信)。

相關問題