アクションバーとメニューがアクションバーにあります。
ハードメニューボタンに触れるとgetActionBar()
nullが返されます。
一番下の 3 番目は、ハード メニュー ボタンの意味です。
次のようにアプリがクラッシュするのを防ぐことができます:if(getActionBar() != null) { // ... }
しかし、それは私がやりたいことではありません。変更 (追加/削除) するアクション バー アイテムが必要です。getActionBar()
そのため、 null を返すwhile はできません。
getActionBar()
なぜnullを返すのか誰にも分かりますか?
アップデート:
これが私のコードです:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (getActionBar() != null) { // Action bar is null here when I click hard menu button.
getActionBar().setDisplayHomeAsUpEnabled(true);
}
// Some logical operations here.
// Get the menu.
BaseActivity.menuOnActionBar = menu;
return super.onCreateOptionsMenu(menu);
}
私のアクティビティでは、更新が完了した後、アクション ビューを削除します (進行状況バーを表示するために、更新をクリックした直後にアクション ビューを xml に設定しました)。
menuOnActionBar.findItem(R.id.menu_refresh).setActionView(null); // This throws an error.
そして、menuOnActionBar
変数定義BaseActivity
:
public static Menu menuOnActionBar;
スローされるエラーは次のとおりです。E/AndroidRuntime(4193): java.lang.NullPointerException