簡體   English   中英

從非活動類更改TextView值

[英]Change TextView value from Non-Activity class

我正在嘗試通過擴展textview所在的布局來將非活動類的setText設置為TextView的新值,但是我仍然無法成功,盡管我能夠讓Text獲得電視的當前值。 這是代碼:

LayoutInflater mInflater = (LayoutInflater) mContext.getSystemService(mContext.LAYOUT_INFLATER_SERVICE);
View view = mInflater.inflate(R.layout.target_details, null);

TextView val = (TextView) view.findViewById(R.id.val);

不知道我是否做得正確。

更新:我使用凱的答案與下面添加的代碼。 現在正在工作。

((Activity)mContext).runOnUiThread(new Runnable(){
        @Override
        public void run(){
            //settext here
        }
    });

您想要從非活動類為TextView設置文本

您可以通過2種方式來實現。
1.在啟動非活動類時傳遞您的活動,並在將文本設置為TextView時使用該活動。

public class YourClass(){
     Activity a;
     public YourClass(Activity activity){
           this.a=activity;
     }
}

2.您可以將Activity傳遞給設置文本的方法

public static void displayText(Activity activity, int id, String text) {
    TextView tv = (TextView) activity.findViewById(id);
    tv.setText(text);
}

例如: displayText(YourActivity.this,R.id.your_text_view,"Text you want to display");

在適配器/非活動類中創建新對象不是一個好主意。 Activity中必須已經有一個TextView類的對象。

如果有必要更改其他類的文本,則可以在Activity中將TextView設置為靜態,然后從適配器訪問它,例如

活動:-

 Static TextView val = (TextView) view.findViewById(R.id.val);

適配器:-

   MyActivity.val.setText("some txt");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM