Androidサブメニューとオプションメニューとコンテキストメニューの実装

6577 ワード

メニューはAndroid開発に欠かせませんが、どのようにして様々なメニューを実現すればいいのでしょうか.頭が痛いのではないでしょうか.以下、ご紹介します.
1.オプションメニューとサブメニューの実装
オプションメニュー:最も一般的なメニューで、Androidではoption menuと呼ばれています.オプションメニューは最大6つのメニュー項目しか表示できません.6つを超えると、6番目のメニュー項目はシステムによって「もっと」というサブメニューに置き換えられます.もともと表示できないメニュー項目はすべて「もっと」メニューのサブメニュー項目として表示されます.
サブメニュー:Androidでサブメニューをクリックすると、懸濁ウィンドウにサブメニューが表示されます.サブメニューはネストをサポートしていません.つまり、サブメニューに他のサブメニューを含めることはできません.                    
手順1:サブメニューとオプションメニューを作成します.「myMenu」という名前のAndroidプロジェクトを作成します.MyMenuActivityクラスで、Source→Override/Implement Methodsを右クリックします.オプションメニューはonCreateOptionsMenu()メソッドで生成されます.コードは次のとおりです.
    public boolean onCreateOptionsMenu(Menu menu) {   //      
        // TODO Auto-generated method stub
        super.onCreateOptionsMenu(menu);    //              
        menu.add(1,1,1,"  ");     
        menu.add(1,2,2,"  ");             //     
        menu.add(1,3,3,"  ");
        menu.add(1,4,4,"  ");
        menu.add(1,5,5,"  ");
        menu.add(1,6,6,"  ");
        menu.add(1,7,7,"    ");       //menu.add(int groupId, int itemId, int order, CharSequence title);
        menu.add(1,8,8,"    ");
        SubMenu submenu=menu.addSubMenu("    ");//          
        submenu.add(1,1,1,"    ");
        submenu.add(1,2,2,"    ");
        submenu.add(1,3,3,"    ");
        submenu.add(1,4,4,"    ");
        return true;
    }

手順2:応答メニュー.onOptionsItemSelected(MenuItem)は、メニュー項目がクリックされるたびにandroidがメソッドを呼び出し、クリックされたメニュー項目に入力します.
public boolean onOptionsItemSelected(MenuItem item) {   //    
        // TODO Auto-generated method stub
        b1.setText(item.getTitle());   //        ,b1         title,
        return true;
    }

2.コンテキストメニューの実装
コンテキストメニュー:Androidでビューコントロールを長押しして表示されるメニューで、windowsが右クリックしてポップアップするメニューであるコンテキストメニューをクリックします.
手順1:コンテキストメニューの登録
public class MyMenuActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        b1=(Button) findViewById(R.id.b1);   //    b1
        this.registerForContextMenu(b1);   //       
    }
    Button b1;

手順2:コンテキストメニューの生成
public void onCreateContextMenu(ContextMenu menu, View v,    //       
            ContextMenuInfo menuInfo) {
        // TODO Auto-generated method stub
        if(v.getId()==R.id.b1)
        {
            menu.clear();     //       (        )
            menu.setHeaderTitle("    ");   //        
            menu.add(0, 1, Menu.NONE, "  ");     //        
            menu.add(0, 2, Menu.NONE, "     ");
            menu.add(0, 3, Menu.NONE, "   ");
            menu.add(0, 4, Menu.NONE, "  ");
        }
    }

手順2:コンテキストメニューへの応答
    public boolean onContextItemSelected(MenuItem item) {  //       
        // TODO Auto-generated method stub
        t1.setText(item.getTitle());
        return true;
    }

悟る
サブメニューを作るとき、最初はデフォルトのMenuにサブメニューを追加しようとしました.もちろん失敗しました.SubMenuサブメニュークラスのオブジェクトだけがサブメニューを含めることができるからです.また、サブメニューの応答でonOptionsItemSelected(MenuItem)をうっかり書き間違えたため、私はずっと実現できませんでした.コンテキストメニューを作成するときは、コンテキストメニューをポップアップするコントロールにコンテキストメニューを登録することを忘れないでください.Androidを学ぶのもしばらくの間、想像していたほど難しくないことに気づきました.フォームのジャンプやメニュー、その他の内容をするときでも、正しい手順や方法をマスターすれば、必ずできます.でも、気をつけなきゃいけないんだよ、书いてないところがあったら必ず指摘してね!