1

HTML:

<a href="javascript:AndroidFunction.xxxx()">xxxx</a>

アクティビティ:

public class MainActivity extends Activity
    {
    @Override
    protected void onCreate(Bundle savedInstanceState)
            {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);        

        WebView webview = (WebView) findViewById(R.id.webview);
        final MyJavaScriptInterface myJavaScriptInterface = new MyJavaScriptInterface(this);
        webview.addJavascriptInterface(myJavaScriptInterface, "AndroidFunction");
        webview.getSettings().setJavaScriptEnabled(true); 
        webview.loadUrl("file:///android_asset/x1.html");        
    }

    public class MyJavaScriptInterface {
        Context mContext;

        MyJavaScriptInterface(Context c) {
            mContext = c;
        }

        public void xxxx()
        {
            setContentView(R.layout.x);              
        }
    }
}

そして、私はこのエラーを受け取ります:

キャッチされていないハンドラ: thread WebViewCoreThread exiting due to uncaught exception android.view.ViewRoot$CalledFromWrongThreadException:

ビュー階層を作成した元のスレッドのみがそのビューにアクセスできます。

お願い助けて。

4

3 に答える 3

0

setContentView1 つには、どこからでも呼び出してはいけませんonCreate。を変更する場合はView、新しい を開始するか、レイアウト階層で をActivity追加/更新します。View

また、これは、UI スレッド以外で sCalledFromWrongThreadExceptionを編集しようとしていることを意味しますがView、これは許可されていません (理由についてはここでは説明しません)。UI スレッドでView.post(Runnable action)を編集するために使用することをお勧めします。この質問に対するView私の答えはあなたを助けるはずです。

于 2013-04-25T17:22:40.490 に答える