2010-12-30 11 views
1

メニューからいくつかのアクティビティを起動するサンプルのAndroidアクティビティを拡張しているうちに、onOptionsItemSelected内で処理されるメニュー項目がいくつかあります。 setIntentonCreateOptionsMenuの範囲内で呼び出してください。menuItem.setIntentとonOptionsItemSelectedを組み合わせても動作しません

基本的には何か:

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    super.onCreateOptionsMenu(menu); 

    menu.add(0, MENU_ID_1, Menu.NONE, R.string.menu_text_1); 
    menu.add(0, MENU_ID_2, Menu.NONE, R.string.menu_text_2); 

    menu.add(0, MENU_ID_3, Menu.NONE, R.string.menu_text_3). 
     setIntent(new Intent(this, MyActivity_3.class)); 

    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    super.onOptionsItemSelected(item); 

    switch (item.getItemId()) 
    { 
     case (MENU_ID_1): 
      // Process menu command 1 ... 
      return true; 

     case (MENU_ID_2): 
      // Process menu command 2 ... 
      // E.g. also fire Intent for MyActivity_2 
      return true; 

     default: 
      return false; 
    } 
} 

どうやら、このような状況でMENU_ID_3上の意思セットが発射されることはありませんか、とにかく関連の活動が開始されることはありません。

ある時点でのAndroid javadocが< <ようになり、[メニュー項目の上に意図を設定している場合] 何もないが、アイテムを処理し、その後、デフォルトの動作は、になります[意図して活動を開始] >> 。

「実際には何も処理しない」とはどういう意味ですか? onOptionsItemSelectedからfalseを返すだけで十分ですか? また、最初にsuper.onOptionsItemSelected(item)に電話をかけずに、デフォルトのスイッチの場合にのみ呼び出すようにしましたが、同じ結果が出ました。

誰にも提案はありますか? Androidは2種類の処理を混在させることはできますか?

あなたのお時間をありがとうございます。

答えて

1

解決策は十分に馬鹿だった。マニフェストで宛先アクティビティ名(例ではMyActivity_3)のスペルが間違っていました。

第3のメニュー項目処理を従来のスイッチロジックonOptionsItemSelectedに変更しました。EclipseデバッガでActivityNotFoundException例外が発生しました。

"setIntent way"のメニュー項目を処理することによって、例外はスローされませんでした。 LogCatを見ると、MenuItemImpl:Can't find activity to handle intent; ignoringが見つかりました。

関連する問題