2010-12-30 2 views
1

메뉴에서 일부 다른 활동을 실행하는 샘플 Android 활동을 확장하면서 onOptionsItemSelected 내에서 처리 된 일부 메뉴 항목을 가져오고 일부 메뉴 항목 (방금 실행 된 인 텐트)이 처리되었습니다 setIntentonCreateOptionsMenu에 전화하여menuItem.setIntent with 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에 텐트 세트가 발사되지 않습니다, 또는 어쨌든 관련 활동이 시작되지 않습니다.

는 어떤 점에서

안드로이드의 javadoc 같은 간다 < < [당신이 메뉴 항목에 대한 의도를 설정 한 경우] 하고 다른 아무것도 항목, 다음 기본 동작하는 것을 처리 [의도로 활동을 시작] >> .

"실제로 다른 항목을 처리하지 못합니다"는 것은 무엇을 의미합니까? onOptionsItemSelected에서 거짓을 반환하는 것으로 충분합니까? 또한 시작 부분에 super.onOptionsItemSelected(item)을 호출하지 않고 기본 스위치 경우에만 호출하려고 시도했지만 동일한 결과가있었습니다.

누구에게 의견이 있습니까? Android에서 두 가지 유형의 처리를 혼합 할 수 있습니까?

모두에게 감사드립니다.

답변

1

확인. 해결책은 충분히 바보 같았습니다. 매니페스트에서 대상 활동 이름 (예 : MyActivity_3)의 철자가 잘못되었습니다.

제 3의 메뉴 항목 처리를 onOptionsItemSelected의 클래식 스위치 로직으로 변경했으며 이클립스 디버거에서 ActivityNotFoundException 예외가 발생했습니다.

"setIntent way"에서 메뉴 항목을 처리하면 예외가 발생하지 않습니다. LogCat을 살펴보면 MenuItemImpl : Can't find activity to handle intent; ignoring을 발견 할 수있었습니다.

관련 문제