0

Javascript で Java 関数の 1 つを呼び出して、その結果を取得したいと考えています。それを行うために、このチュートリアルこの質問に従いました。私はそれらを段階的にたどりましたが、それでもこのエラーが発生します

未定義のメソッド「showKeyBoard」を呼び出すことはできません

これが私のJavaクラスです:

package keyboard;
import org.apache.cordova.DroidGap;
import android.content.Context;
import android.view.inputmethod.InputMethodManager;
import android.webkit.WebView;

public class KeyBoard {
  private WebView mAppView;
  private DroidGap mGap;
  public KeyBoard(DroidGap gap, WebView view) {
    mAppView = view;
    mGap = gap;
  }
  public void showKeyBoard() {
    InputMethodManager mgr = (InputMethodManager) mGap.getSystemService(Context.INPUT_METHOD_SERVICE);
    // only will trigger it if no physical keyboard is open
    mgr.showSoftInput(mAppView, InputMethodManager.SHOW_IMPLICIT);
    ((InputMethodManager) mGap.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(mAppView, 0);
  }
  public void hideKeyBoard() {
    InputMethodManager mgr = (InputMethodManager) mGap.getSystemService(Context.INPUT_METHOD_SERVICE);
    mgr.hideSoftInputFromWindow(mAppView.getWindowToken(), 0);
  }
}

ここに私のメインクラスがあります:

package com.example.helloworld;
import keyboard.KeyBoard;
import android.os.Bundle;
import org.apache.cordova.*;
import android.view.Menu;
import QR.*;

public class MainActivity extends DroidGap {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.init();
    KeyBoard keyboard = new KeyBoard(this, appView);
    appView.addJavascriptInterface(keyboard, "KeyBoard");
    super.loadUrl("file:///android_asset/www/index.html");
  }

  @Override
    public boolean onCreateOptionsMenu(Menu menu) {
      getMenuInflater().inflate(R.menu.activity_main, menu);
      return true;
    }
  }

そして、次のように Javascript で呼び出します。

(function(){
  window.KeyBoard.showKeyBoard();
})();

私が行っていないこと、または行方不明になっていることはありますか? 私が言ったように、私はこのエラーが発生します:

未定義のメソッド「showKeyBoard」を呼び出すことはできません

4

3 に答える 3

2

独自のメソッドを作成しようとするのではなく、PhoneGap プラグインを作成することをお勧めします。JavaScript から Java への通信のすべての問題点については、すでに説明しました。私たちがすでに書いたものを使用すれば、過去 3 年間ですでに解決した Android のバグに遭遇することはありません。

http://docs.phonegap.com/en/2.1.0/guide_plugin-development_index.md.html#Plugin%20Development%20Guide

于 2012-10-23T13:36:52.633 に答える
0

私も苦労していJavascriptInterfaceます。電話できない理由は、の代わりにshowKeyboard電話する必要がある私見です。window.showKeyBoard()window.Keyboard.showKeyBoard()

于 2013-05-20T20:41:58.640 に答える