繁体   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