You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中Java代码在onLoadResource回调设置TextView文本不生效如何解决

问题原因
  • WebViewClient的onLoadResource回调默认运行在子线程,Android系统强制要求所有UI控件的更新操作必须在主线程(UI线程)执行,子线程调用setText不会生效,严重时还会触发应用闪退。
  • 你提供的代码未对webView做初始化绑定,也没有调用加载地址的逻辑,webView的相关回调根本不会触发。
解决方案

先补全webView的初始化逻辑,再将setText操作切换到主线程执行,修改后的代码如下:

public class account extends AppCompatActivity {
    TextView textview;
    WebView webView; // 声明WebView控件
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        // 绑定布局控件
        textview = (TextView)findViewById(R.id.text);
        webView = (WebView)findViewById(R.id.web); // 此处替换为你xml文件里WebView对应的id
        webView.getSettings().setJavaScriptEnabled(true); 

        webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onLoadResource(WebView view, String url) {
                // 切换到主线程执行UI更新
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        textview.setText("Register");
                    }
                });
            }
        });
        // 给webView设置加载地址,触发资源加载回调
        webView.loadUrl("https://你需要加载的目标网址");
    }
}
补充排查点

如果修改后仍不生效,可依次核对以下项:

  • 确认xml布局中已正确添加WebView控件,且id和Java代码中绑定的id完全一致
  • 确认webView.loadUrl被正常调用,WebView确实触发了资源加载流程
  • 可在onLoadResource中添加日志打印,确认回调确实被执行,排除回调未触发的问题

内容的提问来源于stack exchange,提问作者Priya Bhaduriya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:00:00