2013-05-26 13 views
25

私はOption MenuをAndroid用に作りたいと思います。私はこのサイトを訪れています。彼らのスクリプトでは、私はonPrepareOptionsMenuを見つけた、私はコンパイルして、両方の作品の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メソッドは何ですか?その方法は重要ですか?メソッドを削除するだけでいいですか?


追加

ああ、私はまた、約Action Barアンドロイド3.0でを聞き、それがアクションバーがOption Menuを作るための別の方法であると言う、それはonPrepareOptionsMenuを使用します。そうですか?

+0

ただ読んでください。これはそのために作られたものです。あなたが何をするのかについての特定の点を理解していない場合は、それを尋ねてください。 http://developer.android.com/reference/android/app/Activity.html#onPrepareOptionsMenu(android.view.Menu) –

+0

@ZouZou:申し訳ありませんが、Androidで新しく、ドキュメントがありませんあなたが私に言うまで。ありがとうございました。 – Tutompita

+1

ユーザがメニューボタン(物理的またはアクションバー上)を押すと呼び出されます。 –

答えて

35

APIで見てください...ありがとう:

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

+1

ありがとうございました! 「内容を動的に変更する」という言葉はすべてを説明しています! – Tutompita

+0

@Tutompitaこの答えがあなたを満たしていれば、それを正しいものとしてマークすることができます。 – Silox

+0

コンテンツを動的に変更すると、例文で説明できます。 – Killer

7

ユーザーに表示される前にメニューを変更したい場合は、それを行うコードをonPrepareOptionsMenuに入れることができます。私はそれをいくつかの状況でいくつかのメニューオプションを無効にするために動的に使用しました。

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

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

+0

なぜメニューオプションを無効にするのですか?メニューオプションを無効にする必要がある場合を例に挙げることができますか? – Tutompita

+1

私は例を挙げました。この答えがあなたを満たしている場合は、それを正しいとマークしたり、それを有用とマークすることができます。 – Stochastically

+0

あなたが与えた例をありがとう、この方法の別のアイデアを私に与える。私は3つの垂直ドットを持つアプリを見ているが、それは私の2.3.4 Androidで動作します。彼らはどのようにそれを作るのですか? – Tutompita

0

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

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

メニューが変更されない場合は、onCreateOptionsMenuを使用してください。

関連する問題