4

アクションバー(実際にはActionBarSherlock)のアクションアイテムとして編集テキストがあります。レイアウトは独自のxmlにあり、すべてが正常に機能します。編集テキストの内容にアクセスして、問題なく変更できます。

このエディットテキストに変更リスナーを追加したいと思います。onCreateOptionsMenu(Menu menu)をロードし、メニューに入力した後、

EditText search=(EditText) findViewById(R.id.searchbar); // its name in a frame layout

その後

search.addTextChangedListener(new TextWatcher(){

    @Override
    public void afterTextChanged(Editable s) {

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before,
            int count) {
    }
});

このエディットテキストでnullポインタ例外が発生し続けます。問題はおそらく盲目的に明白なものですが、それは私に大きな問題を引き起こします。

ありがとう!

4

2 に答える 2

6

アクションバーはコンテンツビュー内にないため、への呼び出しfindViewByIdは常に。を返しnullます。

menu.findItem(R.id.your_menu_item).getActionView()代わりに、アクションビューへの参照を取得するために呼び出す必要があります。findViewByIdそのビューを使用して、への参照を取得するために呼び出すことができますEditText(または、EditTextがルートビューである場合は、すでに参照があります)。

于 2012-04-18T17:34:35.483 に答える
0

どちらも保証されていない2つの考え-

あなたはそれをチェックしましたか:

EditText search=(EditText) findViewById(R.id.searchbar);

null以外を返しますか?nullを返す場合:

  • SetContentView(右側のファイルに!!)が行の前にありますか?
  • xmlのどこかに問題がありますか...または単に「クリーン」にして再構築する必要があるかもしれません。

または、誤って2つの間を検索するために何かを実行しましたか(たとえば、再宣言しました)?

于 2012-04-18T17:30:10.153 に答える