2012-09-20 22 views
0

我有一個活動類A,它有幾個TextViews作爲其成員變量。類A具有三個TextView的getter方法。我可以將A的引用傳遞給B類並修改三個TextViews嗎?這是不錯的編程習慣嗎?傳遞一個活動並修改其視圖

編輯:代碼 -

A類

public class A extends Activity { 

    private TextView tv1; 
    private TextView tv2; 
    private TextView tv3; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // initialize tv1, tv2, tv3 here 

     // Pass a referce of A to B. 
     new B(this); 
    } 

    public TextView getTv1() { 
     return tv1; 
    } 

    public TextView getTv2() { 
     return tv2; 
    } 

    public TextView getTv3() { 
     return tv3; 
    } 
} 

B類 -

public class B { 
    public B(A a){ 
     a.getTv1().setText("Is"); 
     a.getTv2().setText("this"); 
     a.getTv3().setText("correct?"); 
    } 
} 
+0

顯示您的代碼。 –

+0

添加了代碼。謝謝。 – MediumOne

+0

這不是最佳做法。相反,您可以使用'Intent'將值從A傳遞給B. –

回答

0

你可以,你只需要確保你做你的Views你什麼在主線上做。從其他線程可以使用runOnUiThread。您可以使用Handler。您可以在Activity中定義Handler,並將消息從任何地方發佈到該處理程序。它們將在主線程中進行處理。

它可能只有當你的活動是可見的,另一個類正在運行某個線程,所以你的視圖更新,而他們是可見的。否則,如果「活動」不可見,則可以將視圖設置爲onResumeonStart

仍然要避免使用Handler的過多依賴關係在這種情況下似乎很好。

編輯:在您發佈的代碼中,您爲什麼需要B

+0

這只是示例代碼。在我的實際代碼中,A類真的很長(超過1000 LOC)。這是因爲一個私人WebViewClient類(~200行)試圖修改大部分成員變量。我想讓它成爲一個單獨的公開課,以提高可讀性。 – MediumOne

相關問題