gpt4 book ai didi

javascript - 在 JavaScriptInterface 类中调用 AddView

转载 作者:行者123 更新时间:2023-12-02 17:57:49 26 4
gpt4 key购买 nike

我正在尝试将 TextView 动态添加到线性布局中。但有一个问题。

在我的按钮中,这段代码运行得很好:

TextView ASDF = (TextView) getLayoutInflater().inflate(R.layout.note_date, null);
ASDF.setText("TEST");
HomeContainer.addView(ASDF);

但是当我尝试在 JavaScriptInterface 类调用的函数中添加此 View 时,它不起作用。我正在使用 @JavaScriptInterface 来获取我的 webview 的页面源。简而言之,当网页加载到我的 WebView 中时,我试图将新的 TextView 添加到我的布局中。

所以就像:

public class WebAppInterface
{
Context mContext;
WebAppInterface(Context c) {mContext = c;}

@JavascriptInterface
public void GetHTML(String html)
{
...
...
TextView ASDF = (TextView) getLayoutInflater().inflate(R.layout.note_date, null);
ASDF.setText("TEST");
HomeContainer.addView(ASDF);
}
}

当我检查时,我发现webview的源是正确的,并且ASDF也没有被inflate()返回null,那么我认为问题出在addView上。

如何解决这个问题?

编辑:试过这个,没用:

TextView ASDF = (TextView) getLayoutInflater().from(this.getParent()).inflate(R.layout.note_nick, null);
ASDF.setText("TEST");
((MainActivity)this.getParent()).HomeContainer.addView(ASDF);
<小时/>

编辑:

已解决,感谢@SimonSays,这将解决您的问题:

        runOnUiThread(new Runnable()
{
public void run()
{
TextView ASDF = (TextView) getLayoutInflater().inflate(R.layout.note_date, null);
ASDF.setText("TEST");
HomeContainer.addView(ASDF);
}
});

最佳答案

我的猜测是 JavaScript 方法不是在 UI 线程中执行的。只有这个线程可以修改UI。您可以使用 Activity.runOnUiThread()View.post()这样做。

关于javascript - 在 JavaScriptInterface 类中调用 AddView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20848034/

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