android - Javascript 接口(interface)类中的 SetText

标签 android android-webview

我有一个 javascript 接口(interface)类来从 javascript 接收一些值。我从接口(interface)类中提取了该值,但我无法将该值设置为 TextVie。会有什么问题??

 class JavaScriptInterfaceForCount {
    Context mContext;

    JavaScriptInterfaceForCount(Context c) {
        mContext = c;
    }
    public void receiveValueFromJs(String scrollwidth, String columwidth) {
            mPagenumberTextView.setText(scrollwidth+"");
      }
 }

Logcat 结果

06-08 16:20:37.003: E/AndroidRuntime(1198):                android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created     a view hierarchy can touch its views.
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.view.ViewRoot.checkThread(ViewRoot.java:2802)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.view.ViewRoot.requestLayout(ViewRoot.java:594)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.view.View.requestLayout(View.java:8125)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.view.View.requestLayout(View.java:8125)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.view.View.requestLayout(View.java:8125)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.view.View.requestLayout(View.java:8125)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:254)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.view.View.requestLayout(View.java:8125)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.widget.TextView.checkForRelayout(TextView.java:5378)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.widget.TextView.setText(TextView.java:2688)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.widget.TextView.setText(TextView.java:2556)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.widget.TextView.setText(TextView.java:2531)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at com.epub.reader.TestWebActivity$JavaScriptInterfaceForCount.receiveValueFromJs(TestWebActivity.java:326)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.webkit.BrowserFrame.stringByEvaluatingJavaScriptFromString(Native Method)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.webkit.BrowserFrame.stringByEvaluatingJavaScriptFromString(Native Method)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.webkit.BrowserFrame.loadUrl(BrowserFrame.java:245)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.webkit.WebViewCore.loadUrl(WebViewCore.java:1562)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.webkit.WebViewCore.access$1400(WebViewCore.java:52)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:948)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.os.Looper.loop(Looper.java:123)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:621)
06-08 16:20:37.003: E/AndroidRuntime(1198):     at java.lang.Thread.run(Thread.java:1096)

最佳答案

runOnUiThread(new Runnable() {
     public void run() {
         mPagenumberTextView.setText(scrollwidth+"");
    }
});

你必须在主线程中编辑 UI

关于android - Javascript 接口(interface)类中的 SetText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10947536/

相关文章:

php - 为什么 Mobiledetect.net 脚本无法检测到 iPhone?

android - WebView Youtube 全屏模式

javascript - Android - Activity 中的所有 WebView 是否共享变量? webview 中的范围如何?

android - 显示正规数而不是指数形式

android - StatusBarNotification 如何获取数据或重新发送 Intent ?

Android: java.lang.ClassCastException: android.widget.imageView 不能转换为 android.widget.textView

android - 使用 Jenkins 构建 Android 项目时出现问题(未找到任务)

android - 通过网络浏览器和 WebView 下载pdf

android - 在 android 中隐藏 Webview 错误

android - WebView : how to avoid security alert from Google Play upon implementation of onReceivedSslError