2013-05-11 12 views
19

これはActionBarメニューのxmlファイルです。私onCreate機能でMenuItemのfindViewByIdがnullを返します

<?xml version="1.0" encoding="utf-8"?> 

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item 
      android:id="@+id/fav_button" 
      android:title="Favourite" 
      android:icon="@drawable/unstar" 
      android:showAsAction="always|withText" /> 
</menu> 

setContentViewを呼び出します。私do favButton = (MenuItem) this.findViewById(R.id.fav_button);しかし、これはnullを返します。

しかし、onOptionsItemSelected関数で適切なオブジェクトを返します。

私はActionBarSherlockを使用しています(違いがある場合)。

他のfindViewByIdがnull質問を返すというさまざまなオプションを試しましたが、私の問題は解決していません。代わりgetMenuInflater後onCreateOptionsMenu(中

favButton = (MenuItem) this.findViewById(R.id.fav_button); 

+0

http://www.vogella.com/articles/AndroidActionBar/article.html。リンクを確認してください。 – Raghunandan

答えて

33

)(R.menu.activity_main、メニュー)を膨張させます。

favButton = menu.findItem(R.id.fav_button); 
+2

onCreateで取得する方法はありますか? savedInstanceStateバンドルに基づいてsetChecked()を実行できるようにしたいと思います。あるいは、回転中にMenuItemのチェック状態を保存する方が良いでしょうか? – aij

+1

onCreateで実行できますか? –

+0

これはまだ選択されるまでヌルです –

1

メニューを表示するには、menu.findItem()を使用します。しかし、これは、メニューが膨らんだ後に行う必要があります。

また、コメントのqに答えるために、onPrepareOptionsMenuを使用してメニューの状態を設定できます。このメニューが1回更新される場合は、onCreateOptionsMenuも使用できます。これは1回だけ呼び出されます。

関連する問題