将 TextView 值从非 Activity class 更改为
Change TextView value from Non-Activity class
我正在尝试通过膨胀文本视图所在的布局,从非 activity class 为我的 TextView 设置一个新值,但我仍然没有成功,尽管我能够getText 电视的当前值。这是代码:
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
}
});
在 adapter/non-activity class 中创建新对象不是一个好主意。 Activity.
中必须已经有一个 TextView class 对象
如果需要更改来自其他 class 的文本,您可以在 Activity 中将 TextView 设置为静态并从适配器访问它,例如
Activity:-
Static TextView val = (TextView) view.findViewById(R.id.val);
适配器:-
MyActivity.val.setText("some txt");
您想从非 activity class
为 TextView 设置文本
您可以通过两种方式完成。
1. 在启动非 Activity class 时传递 activity 并在将文本设置为 TextView 时使用它。
public class YourClass(){
Activity a;
public YourClass(Activity activity){
this.a=activity;
}
}
2.You 可以将 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 class 为我的 TextView 设置一个新值,但我仍然没有成功,尽管我能够getText 电视的当前值。这是代码:
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
}
});
在 adapter/non-activity class 中创建新对象不是一个好主意。 Activity.
中必须已经有一个 TextView class 对象如果需要更改来自其他 class 的文本,您可以在 Activity 中将 TextView 设置为静态并从适配器访问它,例如
Activity:-
Static TextView val = (TextView) view.findViewById(R.id.val);
适配器:-
MyActivity.val.setText("some txt");
您想从非 activity class
为 TextView 设置文本您可以通过两种方式完成。
1. 在启动非 Activity class 时传递 activity 并在将文本设置为 TextView 时使用它。
public class YourClass(){
Activity a;
public YourClass(Activity activity){
this.a=activity;
}
}
2.You 可以将 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");