web-dev-qa-db-ja.com

onPrepareOptionsMenuは何をしますか?

Android用Option Menuを作成したいので、このサイトにアクセスしました。彼らのスクリプトでは、onPrepareOptionsMenuが見つかりました。Android 2.3.3コンパイラを使用してonPrepareOptionsMenuの有無にかかわらずコンパイルと実行を試みましたが、両方とも動作しました。違いはありません。

public boolean onCreateOptionsMenu(Menu menu){
//code here
}

public boolean onOptionsItemSelected(MenuItem item){
//code here
}

public boolean onPrepareOptionsMenu(Menu menu){
//code here
}

実際にonPrepareOptionsMenuメソッドとは何ですか?その方法は重要ですか?メソッドを削除してもいいですか?


添加

ああ、Android 3.0では、アクションバーはAction Barを作成するための代替方法であり、onPrepareOptionsMenuを使用して、Option Menu 。そうですか?

ありがとうございました...

30
Tutompita

[〜#〜] api [〜#〜] を見てください:

表示する画面の標準オプションメニューを準備します。これは、メニューが表示されるたびに、メニューが表示される直前に呼び出されます。このメソッドを使用して、アイテムを効率的に有効/無効にしたり、コンテンツを動的に変更したりできます。

42
Silox

ユーザーに表示される前にメニューを変更する場合は、onPrepareOptionsMenuにそれを行うためのコードを配置できます。状況によっては、これを動的に使用して一部のメニューオプションを無効にしました。

メニューオプションを無効にする場合の例として、目的地を指定する方法があるアプリがありました。私のメニューオプションの1つは、目的地までのルートを計算することでした。ただし、宛先が指定されていない場合、そのオプションは適用されなかったので、onPrepareOptionsMenuを使用して、適用できないメニューオプションを無効にしました。

From Android 3.0以降、メニューバーであるActionBarがあります。最も重要な項目はActionBar自体に入りますが、アクションバーに十分なスペースがない場合はオーバーフローが発生しますメニュー項目は常にオーバーフローメニューにあり、アクションバー自体には決してないように指定できます。一部のデバイスでは、アクションバーのオーバーフローはデバイスの永続的なメニューボタンに対応しますが、メニューボタンオーバーフローメニューは、アクションバーの右側に3つの垂直ドットとして表示されます。

7
Stochastically

onCreateOptionsMenuは、アクティビティが最初に作成されたときに1回呼び出されます。 falseを返す場合、オプションメニューは表示されず、onPrepareOptionsMenuは呼び出されません。

OnCreateOptionsMenuがtrueを返す場合、onPrepareOptionsMenuもアクティビティが表示される前に呼び出され、オプションメニューが無効化されるたびに呼び出されます。アイテムの作成後に有効化/無効化、表示/非表示、または追加/削除する必要がある場合は、onPrepareOptionsMenuを使用します。

メニューが変わらない場合は、onCreateOptionsMenuを使用します。

1
Steven Spungin