2014-10-06 30 views
0

我從服務控制Activity UI時遇到問題。它不起作用。服務無法控制活動用戶界面?

類MainActivity

public void showNotice() { 
    Log.d("log", "can't connect to server"); 
    tvText.setText(notice); 
    tvTex.setVisibility(View.VISIBLE); 
    pbDialog.hide(); 
} 

我打電話showNotice方法在我的服務:

((MainActivity) mContext).showNotice(); 

但只顯示日誌 「無法連接到服務器」。

tvText不會更改任何內容,不會更改文本,不可見。 pbDialog不會隱藏?

我可以幫我解決嗎?非常感謝。

+1

嘗試設置showNotice()從您的MainActivity一個靜態方法,然後在您的服務請求MainActivity.showNotice(),看看是否作品...... – tibuurcio 2014-10-06 03:41:58

+0

嘗試使用廣播,你可以在下面找到細節鏈接http://stackoverflow.com/questions/14695537/android-update-activity-ui-from-service – Ranjithkumar 2014-10-06 03:44:06

回答

1

服務在自己的後臺線程中運行,UI只能從UI線程修改,這與主要活動非常相似。

您可以嘗試這樣做,您可以在要隱藏對話框時從服務中廣播事件。有一個廣播監聽器註冊了這個會處理UI修改。您應該使用LocalBroadcastManager併爲您的廣播指定一個唯一的名稱。

在你mainActivity,在調用onStart或onCreate方法使用

registerReceiver(<receiver instance>, <broadcast name>) 

這將設置您的mainActivity來收聽廣播,接下來您需要定義您的廣播接收器,它就是上面的寄存器調用。

​​