1

下の図のように、クリック可能なチェックを使用してオプションメニューを作成する方法を示すチュートリアルの方向を誰でも指摘できますか?


代替テキスト http://img291.imageshack.us/img291/1221/deviceit.png


私は次のように試しました:

/** Menu creation and setup **/

/* Creates the menu items */
public boolean onCreateOptionsMenu(Menu menu) {
 boolean result = super.onCreateOptionsMenu(menu);

    menu.add(0, 1, 0, "Speaker").setCheckable(true);
    menu.add(0, 2, 0, "Mute").setCheckable(true);
    return result;
}

/* Handles item selections */
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case 1:
  if(audioManager.isSpeakerphoneOn()==false){
   audioManager.setSpeakerphoneOn(true);
   audioManager.setRouting(AudioManager.MODE_IN_CALL,
      AudioManager.ROUTE_SPEAKER, AudioManager.ROUTE_ALL);
  }else{
   audioManager.setSpeakerphoneOn(false);
   audioManager.setRouting(AudioManager.MODE_IN_CALL,
      AudioManager.ROUTE_EARPIECE, AudioManager.ROUTE_ALL);
  }
        return true;
    case 2:
     if(audioManager.isMicrophoneMute())
   audioManager.setMicrophoneMute(false);
   else
   audioManager.setMicrophoneMute(true);
        return true;
    }
    return false;
}  

しかし、これは機能しません。オプションメニューのボタンにテキストが表示されるだけです

編集:次の onPrepareOptionsMenu メソッドを追加しました:

public boolean onPrepareOptionsMenu(Menu menu){
    boolean result = super.onPrepareOptionsMenu(menu);

    if(audioManager.isSpeakerphoneOn())
     menu.findItem(1).setChecked(true);
    else
     menu.findItem(1).setChecked(false);

    if(audioManager.isMicrophoneMute())
     menu.findItem(2).setChecked(true);
    else
     menu.findItem(2).setChecked(false);


    return result;
}

ただし、上の図のように、テキストだけでチェックライトなしで同じ結果が得られます

4

2 に答える 2

4

オプション メニューの状態を動的に変更する場合は、 を使用する必要がありますonPrepareMenu()。この方法では、動的チェックを行い、必要なものを更新できます。幸運を!!
ドキュメンテーション

掘り下げた後、これはカスタムビューのように見えます。あなたの写真はこのコードから来ていると思います。

于 2010-08-06T12:47:36.610 に答える
1

これは古い質問ですが、同じ問題があり、上記の optionsMenu を見つけるために多くの検索を行いました。http://www.codeproject.comでチュートリアルを見つけて、少し修正しました。プロプログラマーのコードではないかもしれませんが、私にとってはうまくいきます。Google サイトの私の (貧弱に配置された) Web ページで私の変更を参照してください (このサイトにも小さなチュートリアルがあります)。

https://sites.google.com/site/opiatefuchs/android-code-examples

このコードは、Code Project Web ページ (多くの小道具) の wjfrancis からのオリジナルです。

http://www.codeproject.com/Articles/173121/Android-Menus-My-Way

私はそれを変更したばかりで、誰かがこのコードを改善するためのアイデアを持っていればうれしいです. しかし、今のところ、それは機能します。

于 2012-11-18T18:09:35.317 に答える