【发布时间】:2019-06-16 08:04:23
【问题描述】:
这段代码在MainActivity的OnCreate中
inflater = getLayoutInflater();
serversView = inflater.inflate(R.layout.layout_home, null, false);
test = serversView.findViewById(R.id.titleDescription);
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
//some code
runOnUiThread(new Runnable() {
@Override
public void run() {
test.setText(utf8text+"mk");
Log.i(LOG_TAG,"serversView: "+ serversView + " test: "+ test + " test.getText().toString():"+ test.getText().toString());
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
使用类 Thread 是强制性的!
当我登录Log.i(LOG_TAG," test.getText().toString():"+ test.getText().toString()); 一切正常时,文本已更改,但在 UI 中什么也没做。有什么问题?
更新: 当我这样做时:
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(utf8text);
Log.i(LOG_TAG,"textView.getText: "+ textView.getText().toString());
}
});
如果 textView 在 main_activity.xml 中,那么它会改变。但是如何做,例如使用 LayoutInflater 来获取和更改另一个片段/活动中的 TextView?
【问题讨论】:
标签: java android multithreading layout-inflater java-threads