2012-02-09 15 views
4

私はオプションメニューを作成し、いくつかのメニュー項目でいっぱいにしました。何らかの理由で、メニュー項目が追加されたときの順序は、望ましくない。アンドロイドアプリのオプションメニューでメニュー項目を並べ替えるにはどうすればいいですか?

メニュー項目が希望の順序で表示されるようにするには、作成後にソート手順が必要です。しかし、私はアンドロイドのdevドキュメントを検索し、これを行う方法がない(または私はそれを見つけることができませんでした)。

これを回避する方法はありますか?お知らせ下さい。

ありがとうございます!

いくつかのサンプルコード:

public boolean onCreateOptionsMenu(Menu menu) { 

    menu.add("menuItem1"); 

    menu.add("menuItem2"); 

    // after this I want to sort the items 

    ArrayList<MenuItem> list = new ArrayList<MenuItem>(); 

    for(int i = 0; i < menu.size(); i ++) { 
     list.add(menu.getItem(i)); 
    } 

    Collections.sort(list, new SampleComparator()); 

    // But then I don't know how to add the sorted list of menu items back 
}     

答えて

7

あなたはandroid:orderInCategory属性またはMenu.add方法のorderパラメータを使用して、メニュー項目の最終的な表示順序を調整することができます。それ以外に、私はメニューアイテムを並べ替える方法はないと信じています。さらに、私はどのような種類のメニューがこれを必要とするのだろうかと思うだろう—異なるUI要素を使用するほうが良いかもしれない。

+0

を参照してください:我々はに大きな活動のクラスで物事を破る複合フレームワークを持っています各コンポーネントは、メニュー項目の作成と追加を担当します。しかし、異なるコンポーネントがメニューに並行して追加されているので、順序は保証されません。これは私がここで解決しようとしている問題です。 – Linghui

+0

私は参照してください。 'orderInCategory'または' order'パラメータが機能するはずです...最終的な表示順序を決定します。 –

+0

メニューが複数の断片でまとめられているときに非常に便利です! –

1

あなたはこのように追加するときは、アイテムを並べ替える必要があります。

 menu.add (int groupId, int itemId, int order, CharSequence title) 

はソートを必要とするために、メニューの種類についてreference

関連する問題