2

Android Javascript Interface(JAVA)メソッドを呼び出すjavascriptメソッドを備えたWebビューがあり、次にJavascript Interface(JAVA)がcontext(Reader)アクティビティのメソッドを呼び出してUI画面を開きます。 ReaderActivity から直接 openDiscussionsUI() を実行すると、UI は正常に開きますが、Javascript インターフェイスから実行すると、openDiscussionsUI() メソッドが中断されたかのように完全に実行されないようです。誰かがこれで私を助けてくれることを願っています。前もって感謝します。





JavaScript メソッド

marginIconClick: function (itemId) {
    activity.startDiscussionsActivity();
}



(JAVA) JavaScript インターフェイス メソッド

public void startDiscussionsActivity() {
    readerActivity.openDiscussionsUI();
    Log.e("startDiscussionsActivity","startDiscussionsActivity");
}



ReaderActivity メソッド

public void openDiscussionsUI() {
    Log.e("openDiscussionsUI 1","openDiscussionsUI 1");
    discussionBox.startAnimation(slidenotesup);
    Log.e("openDiscussionsUI 2","openDiscussionsUI 2");
    discussionBox.setVisibility(View.VISIBLE);
    Log.e("openDiscussionsUI 3","openDiscussionsUI 3");
    discussionDescription.requestFocus();
    Log.e("openDiscussionsUI 4","openDiscussionsUI 4");
}



これは私のログです
アイコン番号#1をクリックしてください

11-06 17:21:39.190  12951-12980/com.double_eye.monamiq E/openDiscussionsUI 1﹕ openDiscussionsUI 1
11-06 17:21:39.190  12951-12980/com.double_eye.monamiq E/openDiscussionsUI 2﹕ openDiscussionsUI 2


アイコン番号#2をクリックします

11-06 17:22:32.154  12951-12980/com.double_eye.monamiq E/openDiscussionsUI 1﹕ openDiscussionsUI 1
11-06 17:22:32.154  12951-12980/com.double_eye.monamiq E/openDiscussionsUI 2﹕ openDiscussionsUI 2
11-06 17:22:32.154  12951-12980/com.double_eye.monamiq E/openDiscussionsUI 3﹕ openDiscussionsUI 3
11-06 17:22:32.170  12951-12951/com.double_eye.monamiq I/WEBVIEW﹕ Message - 266:Uncaught Error: Error calling method on NPObject.


アイコン番号#3をクリックします

11-06 17:22:52.818  12951-12980/com.double_eye.monamiq E/openDiscussionsUI 1﹕ openDiscussionsUI 1
11-06 17:22:52.818  12951-12980/com.double_eye.monamiq E/openDiscussionsUI 2﹕ openDiscussionsUI 2
11-06 17:22:52.818  12951-12980/com.double_eye.monamiq E/openDiscussionsUI 3﹕ openDiscussionsUI 3
11-06 17:22:52.818  12951-12980/com.double_eye.monamiq E/openDiscussionsUI 4﹕ openDiscussionsUI 4
11-06 17:22:52.818  12951-12980/com.double_eye.monamiq E/startDiscussionsActivity﹕ startDiscussionsActivity


アイコン番号#4をクリックします

11-06 17:23:37.850  12951-12980/com.double_eye.monamiq E/openDiscussionsUI 1﹕ openDiscussionsUI 1
11-06 17:23:37.850  12951-12980/com.double_eye.monamiq E/openDiscussionsUI 2﹕ openDiscussionsUI 2
11-06 17:23:37.850  12951-12980/com.double_eye.monamiq E/openDiscussionsUI 3﹕ openDiscussionsUI 3
11-06 17:23:37.850  12951-12980/com.double_eye.monamiq E/openDiscussionsUI 4﹕ openDiscussionsUI 4
11-06 17:23:37.850  12951-12980/com.double_eye.monamiq E/startDiscussionsActivity﹕ startDiscussionsActivity



3回目と4回目までに実行されますが、まだUIが表示されません。非常に奇妙です。

アップデート:

Javascript インターフェイスからのコールバックが UI スレッドで実行されませんでした

public void test() { // AndroidInterface.test() を呼び出してから 1ms でここに到着します。Web スレッドに到達します。

public void startDiscussionsActivity() {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                readerActivity.openDiscussionsUI();
                Log.e("startDiscussionsActivity","startDiscussionsActivity");
            }
        });
    }
4

1 に答える 1

2

すべての UI 作業がメイン (UI) スレッドで実行されていることを確認してください。JavaScript インターフェイスは別のスレッドにコールバックします。つまり、myActivity.runOnUiThread() または同様の関数を呼び出す必要があります。

于 2013-11-06T20:46:37.817 に答える