2012-04-18 32 views
0

如何將值設置爲不在活動中的類的TextView?我們在不確定的時間獲得的價值,因此設置該類的價值很重要。如何從沒有活動的類中爲TextView設置值?

所有的建議會有幫助。謝謝。

P.S。:

例如,在Actvity我有方法,其將值設置爲一個TextView。

public void textViewSetText (String value){ 
    tv.setText(value);  
} //how correctly to transfer value from my class to get the desired effect? 

回答

0

如果您沒有持有您的活動,那麼它是不可能的,因爲TextView在活動中可用。所以當你沒有參考活動時,你也不能改變它的內容。如果您將活動引用傳遞給靜態方法,則可以使用該方法進行修改。

+0

例如,在Actvity中我有方法,它將值設置爲TextView。公共無效tvTwoThreadTimeSetText(字符串值){ \t \t電視。的setText(值); //如何正確地從我的班級傳輸值以獲得所需的效果 – Sinigami 2012-04-18 14:53:44

+0

nop,您不能在不使用活動引用的情況下傳輸此值。但是如果您使用某個BroadcastReceiver,那麼您可以通過使用應用程序的上下文來執行此操作(不需要任何活動) – waqaslam 2012-04-18 21:02:30

0

通常情況下,TextView的內容只能在活動內部設置。儘管您可以在活動之外設置該值,但它並不十分有用。

至於你的問題,你在不確定的時間得到了價值,有一些選擇。例如,你可以註冊一個回調到該類,當其他類獲得該值時,你可以通過該回調。但要小心線程問題,爲TextView設置值是一個UI操作,它只能在UI線程中完成。

0
  1. 不要從UI線程
  2. AsyncTask允許您在用戶界面上執行異步工作的外部訪問Android的UI工具包。它在工作線程中執行阻塞操作,然後將結果發佈到UI線程上,而無需您自己處理線程和/或處理程序。

下面是一個例子:

public void onClick(View v) { 
     new SomeTask().execute(something); 
    } 
    private class SomeTask extends AsyncTask<Something, Void, String> { 
     /** The system calls this to perform work in a worker thread and 
      * delivers it the parameters given to AsyncTask.execute() */ 
     protected Bitmap doInBackground(Something something) { 
      return string; // the TextView's text 
     } 

     /** The system calls this to perform work in the UI thread and delivers 
      * the result from doInBackground() */ 
     protected void onPostExecute(String result) { 
      textView.setText(result); 
     } 
    } 

但是,如果你不給你的情況更詳細,沒有確切的答案可能會令你滿意。

0

您可以使用外部靜態類來保存要修改的字符串的值(並在您返回到TextView_Class時設置該值),只有訪問靜態類才能獲取該值。

您也可以將「this」(Activity)保存在Static類中,並從任何地方訪問該Activity,以便修改TextView。 (我不認爲這會被推薦)。

根據情況(你沒有解釋足夠的),正常的事情是捆綁字符串,如果他們是父子類。

0

我不能確定你的問題,但 嘗試像這可能是它的工作

((MainActivity) activity).textViewSetText(); 

public void textViewSetText (String value){ 

    tv.setText(value);  
} 

,但你的行爲必須延伸在MainActivity。

相關問題