gpt4 book ai didi

java - 当我更改文本并将其显示在线程中的 UI 上时,什么也没做(JAVA)

转载 作者:行者123 更新时间:2023-12-02 04:23:59 24 4
gpt4 key购买 nike

这段代码位于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() {
@覆盖
公共(public)无效运行(){
textView.setText(utf8text);
Log.i(LOG_TAG,"textView.getText: "+ textView.getText().toString());
}
});

如果 textView 位于 main_activity.xml 中,那么它会发生变化。但是,例如,如何使用 LayoutInflater 来获取和更改另一个 fragment/Activity 中的 TextView?

最佳答案

在 run 方法中添加以下行

serversView.invalidateViews();

例如,

public void run() {
test.setText(utf8text+"mk");
serversView.invalidateViews();
Log.i(LOG_TAG,"serversView: "+ serversView + " test: "+ test + "test.getText().toString():"+ test.getText().toString());
}

关于java - 当我更改文本并将其显示在线程中的 UI 上时,什么也没做(JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56617136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com