2012-01-20 48 views
1

我有一個主要活動,它運行一個線程,該線程通過Handler將結果返回給主要活動(比如字符串)。我正試圖創建另一個活動,從tha min活動中調用,緊接着創建提到的Thread。這第二項活動將顯示來自主要活動(通過放置附加項發送)的結果(即字符串字段)。所以,String值首先被初始化爲一個空值,然後在某個時間點之後。線程將更新字符串的值。因此,我必須將此更新的值發送到第二個活動,該活動已位於Activity堆棧的頂部,並等待該String的更新值。當主要活動具有更新的值時,需要通知子活動

我環顧四周,但人們討論onActivityResult()技術。你對這個實現有什麼想法嗎?

回答

0

我建議的是在你的活動中Strin值被改變,聽取那個活動的改變,然後根據String值開始新的活動。您應該有一個按鈕來顯示並檢查文本是否爲空,並相應地啓動活動。 這種方法似乎是可行的。

2

我看到了兩個可能的解決方案:

  • 如果你的第二個活動(接收器)具有SINGLE_TOP屬性,你可以把它的意圖和過程它Activity.onNewIntent()。 Intent的SINGLE_TOP標誌也應該起作用。
  • 您可以通過((SenderActivity) getParent()).setReceiverHandler(handler)通過從接收器的工作處理程序來發送者的活動(此代碼駐留在ReceiverActivitysetReceiverHandler()SenderActivity聲明),並用它來通知ReceiverActivity任何變化。 UPD:該方法允許TabActivity與其嵌入式活動之間的通信。這在一般情況下不起作用。
+0

在第二個提議中,((SenderActivity)getParent())返回null。文檔說,如果這個視圖是一個嵌入子項,getParent()將返回父活動。然後我改變了SenderActivity來擴展ActivityGroup而不是Activity。但它也沒有工作。這兩項活動應該如何做你寫的內容? – baris

+0

你是對的。這種方法在我們的代碼中經常使用,我認爲它是通用的,實際上它只在TabActivity和它的子代之間起作用。 – Ash

相關問題