0

(最初に、私の専門分野は HTML5 (および php/coldfusion) であり、Java/Android の初心者であることを述べさせてください)

内部にonCreateOptionsMenuは、Android アクションバーの検索アクション内でクエリの変更を処理する次のコードがあります。

final SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
        public boolean onQueryTextChange(String newText) {
            //I want to call super.loadUrl from here
            return true;
        }
};

問題は、テキストが変更されるたびに phonegap の loadUrl メソッドを呼び出したいことですが、super他の何かを参照しているように見えるため、これは不可能です。上記の構造が何と呼ばれているかさえ知っていれば、おそらくこれをグーグルで検索できるでしょう(それはある種のサブクラス定義のようです)が、それさえわからsuper.superず、許可されていないので、私は全損。

参考までに:私のクラスは次のようになります

public class MainActivity extends DroidGap implements ActionBar.OnNavigationListener {

これがloadUrlの由来です(私はの方向にも試しましたDroidGap.loadUrl)。

4

1 に答える 1

2

あなたの質問にはいくつかの重要なポイントが欠けている可能性があると思います。Super は、現在のオブジェクトのスーパークラスを参照します。あなたの場合、現在のオブジェクトは queryTextListener で、スーパーは SearchView.OnQueryTextListener です

以下のコメントに基づく編集: 含まれているメソッド (最終的な SearchView.OnQueryTextListener queryTextListener と同じスコープ...) で、最終的な参照を追加します。

final DroidGap droidGap = this;
final SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
    public boolean onQueryTextChange(String newText) {
        droidGap.loadUrl(...);
        return true;
    }

};

于 2012-08-30T16:30:57.197 に答える