2012-11-21 49 views
0

我有一個關於從不是Activity的子類的類設置TextView的問題。該類主要用於處理第三方服務器的註冊和REST請求。如何從另一個類(不擴展到Activity.class)設置TextView

從第三方服務器獲取文本框信息後,在主活動中設置TextView爲時已晚。

  • 我無法使用SharedPreferences來設置此信息,因爲MainActivity已經啓動。
  • 由於我的java類不是活動類,所以我無法將這些信息傳遞給Bundle。

如何傳遞此信息並在MainActivity中設置TextView?有沒有辦法做到這一點?

+0

如果沒有看到實際的實施方案,很難提供解決方案。 – Egor

+0

看到這篇文章http://stackoverflow.com/questions/5813785/how-to-update-textview-from-a-class-that-doesnt-extend-activity-class –

+0

嘗試使用textView作爲靜態和使用yourMainActivity。 textview.setText( 「測試」); –

回答

2

這樣做的正確方法是創建一個監聽器。

創建一個接口:

public interface OperationCompletedListener{ 
void onOperationCompleted(String resultValue); 
} 

然後在你的類調用REST服務,這個監聽器,並設置它的方法創建一個變量。

private OperationCompletedListener mListener; 

public void setOperationCompletedListener(OperationCompletedListener listener){ 
mListener=listener; 
} 

然後,當你休息服務完成的呼叫象下面這樣:

if(mListener!=null){ 
mListener.onOperationCompleted("your value to be passed"); 
} 

然後在其中包含的TextView您的活動類,創建OperationCompletedListener的對象,並使用set將其設置爲其他類我們之前創建的方法。然後在onOperationCompleted方法中,使用您的值設置文本視圖,然後完成。

private OperationCompletedListener mOperationCompletedListener=new OperationCompletedListener() { 

    @Override 
    public void onOperationCompleted(String resultValue) { 
     yourTextView.setText(resultValue); 
    } 
}; 

restServiceClassObject.setOperationCompletedListener(mOperationCompletedListener); 
+0

非常感謝你 – StillHopeForMe

+0

我不知道我應該在哪裏使用restServiceClassObject.setOperationCompletedListener(mOperationCompletedListener);呼叫。你能幫忙嗎? – StillHopeForMe

+0

這應該在包含文本視圖的活動類中。 –

0

您可以創建一個靜態方法來更新活動類中的textview。然後在你想要的時候從你的其他類調用這個方法。

0

嘗試將Activity傳遞給非Activity class當你實例化。例如:

public class NonActivityClass { 
    private Activity parentActivity; 
    public NonActivity(Activity parentActivity) { 
     this.parentActivity = parentActivity; 
    } 
} 

或者,你可以通過Activity靜態方法在你NonActivityClass如果你不想進行實例化(這是abstract)。然後,您可以充氣TextView或從父級執行findViewById並設置文本。

根據我的經驗,您絕對不應該使用靜態非終結變量來維護活動間的參考。當您重新啓動應用程序或手機時,或者當Android終止您的應用程序進程時,變量的引用和狀態會丟失,並可能導致您的應用程序崩潰。

相關問題