从非活动类更改TextView值

时间:2015-04-12 10:27:20

标签: java android android-layout textview android-inflate

我试图通过膨胀文本视图所在的布局来从非活动类中为我的TextView设置一个新值,但是我仍然不成功,尽管我能够获得电视的当前值。这是代码:

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);

不确定我是否正确地做到了。

更新: 我使用Kay的答案,下面添加了代码。它现在正在运作。

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

2 个答案:

答案 0 :(得分:3)

您想要从非活动类

设置TextView的文本

你可以用两种方式做到这一点 1.在启动Non-Activity类时传递您的活动,并在将文本设置为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");

答案 1 :(得分:1)

在适配器/非活动类中创建新对象不是一个好主意。活动中必须已有一个TextView类对象。

如果需要更改其他类中的文本,可以在Activity中使TextView静态并从适配器访问它,如

的活动: -

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

适配器: -

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