1

jQuery Mobile と PhoneGap を使用して Android アプリを開発しています。これは私の活動です:

public class xxx extends DroidGap {
  /** Called when the activity is first created. */
  private String FILENAME = "";
  private static final String HTML_ROOT = "file:///android_asset/www/";
  private Handler handler = null;
  private static WebView webView = null;
  public MyTeam team = null;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.init();
    handler = new Handler();
    FILENAME = getString(R.string.fileName);
    //parsing data from file
    String json = readFile();
    team = parseJson(json);
    appView.addJavascriptInterface(this, "MyTeam");
    super.loadUrl("file:///android_asset/www/menu.html");
  }
  public String HW(){
    return team.getTeamName();
  }

そして、これはmenu.htmlの私のJavascriptコードです:

$(document).ready(function(){
  alert(MyTeam.HW()); // work perfectly
  alert("name "+MyTeam.team.getTeamName()); //doesn't work!
});

問題は次のとおりです。

  • team.getTeamName(); を返す HW 関数にアクセスできます。
  • MyTeam.team.getTeamName() が機能しないため、アクティビティでチーム変数名にアクセスできません。

関数にしかアクセスできず、パブリック変数に直接アクセスできないようです。

私が間違っていることは何ですか?

ありがとう。

4

1 に答える 1

2

Java オブジェクト フィールドに直接アクセスすることはできません。addJavaScriptInterfaceのドキュメントにあります。また、PhoneGap を使用している場合は、プラグインを作成するだけで、addJavaScriptInterface がダウンするケースについて心配する必要があります。

于 2012-11-26T04:02:09.063 に答える