

はじめまして。皆様どうかお知恵を御貸しください。

Android の ActionBar の menuItem をクリックした時の動作についてです。  
よく、 Toast などの処理はみるのですが、画面遷移（Actionbar の menu から ListFragment へ）などが見つかりません。  
`onOptionsItemSelected` 内で  
どのように、画面遷移を指定すべきか、教えて頂けますと幸いです。  
現在は以下のように試しております。しかし、 `menu_home` を押すと落ちてしまう状況です。  
どのように書き直すべきでしょうか？  
遷移先は、 `ListFragment` です。

[code]

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        FragmentManager mFragmentManager = getFragmentManager();
    
        switch (item.getItemId()) {
    
            case R.id.menu_home:
                Fragment mEvent = new Event();
                mFragmentManager.beginTransaction().replace(R.id.menu_home, mEvent).commit();
                break;
        }
        return true;
    }
    
[/code]


CC BY-SA 3.0
2015-03-12T13:34:04.670
7845
2015-08-19T11:04:48.627
2015-03-12T15:05:25.087
8000
8765
question
android android-fragments
Actionbarのmenu itemをクリックした時の動作

[code]

    replace(R.id.menu_home, mEvent)
    
[/code]

とあるので、メニューボタンをmEventフラグメントで`replace`しようとしているのが原因です


CC BY-SA 3.0
2015-03-12T18:36:50.840
7848
2015-03-12T18:36:50.840
845
7845
answer


それぞれの機能を見ていくと

`beginTransaction()`フラグメントの変更を開始します

`commit()`フラグメントの変更を確定します。

`replace(A,B)`Aで指定されたViewのidにBで指定されたフラグメントを表示します。  
もともとそこにフラグメントがあれば削除します。

`R.id.menu_home`各オプションメニューに割り当てられたidです

`show()`Viewに割り当てられたフラグメントを表示します。

落ちるときにログに以下は載っていませんか

> No view found for id ～～

メッセージの通り`R.id.menu_home`はViewのidではありません。  
replace(A,B)に渡すのは表示させたいViewのidです。


CC BY-SA 3.0
2015-03-13T03:11:06.873
7861
2015-08-19T11:04:48.627
2015-08-19T11:04:48.627
10455
7256
7845
answer