22

android-support-v4.jar 라이브러리를 사용하는 프로젝트에서 ICS의 조각에 표시 할 옵션 메뉴를 가져올 수 없습니다. Galaxy Nexus 핸드셋 테스트 중입니다.호환성 라이브러리를 사용하여 ICS에 옵션 메뉴가 표시되지 않습니다.

우리는 작업 표시 줄을 사용하지 않으므로 2.2 이상 호환이 필요합니다. ICS에서 액티비티의 옵션 메뉴를 볼 수 없습니다. (FragmentActivity는 onCreateOptionsMenu를 지원하지 않습니다.)

이전 Android 버전에서 메뉴를 사용할 수 있습니다. 옵션 메뉴를 사용할 수있는 모든 올바른 프레임 워크가 있습니다. 아래)하지만 ICS에는 아무것도 표시되지 않습니다. 코드를 단계별로 실행할 때 onCreateOptionsMenu가 호출되지 않습니다. 누구든지 수정 제안을 제안 할 수 있습니까? 매니페스트 파일에

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 

public class SuperFragment extends Fragment { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     setHasOptionsMenu(true); 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     inflater.inflate(R.menu.display_options_actions, menu); 
     super.onCreateOptionsMenu(menu, inflater); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch(item.getItemId()) { 
      case R.id.menu_sign_in: 
       break; 
      case R.id.menu_sign_out: 
       break; 
     } 
     return true; 
    } 
    // ... 
} 

대상 OS 버전 :

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="14"/> 
+0

여기에서 가져 오기 목록을 보는 것이 도움이됩니다. 프레임 워크에서 지원 라이브러리 조각 또는 android.app.Fragment를 사용하고 있습니까? 활동에서 다른 메뉴 항목을보고 있습니까? 귀하의 활동은 활동 표시 줄을 사용합니까? 매니페스트의 targetSdkVersion은 무엇입니까? – adamp

+0

귀하의 의견을 보내 주셔서 감사합니다. 내 질문에 몇 가지 세부 사항을 추가했습니다. – Martyn

답변

32

매니페스트에서 android:targetSdkVersion="14" 제거 다시 옵션 메뉴 버튼을 할 수 있습니다.

내 마술에 @android:style/Theme.Black.NoTitleBar이라는 테마가 지정되어 있기 때문에 - android : targetSdkVersion이 14 인 경우, 옵션 메뉴가 버튼 모음의 옵션 메뉴 버튼과 반대되는 작업 표시 줄 메뉴에 삽입됩니다. 화면 하단에서 테마는 활동 제목과 작업 표시 줄을 제거하는 것입니다.

The action bar can be removed

,이 버전 2.2을 통해 호환 그래서 나는 그것이 작동받을 아직이야으로이 문제를 해결할 것인지 잘 모르겠습니다 있지만 - 4

+4

키는 대상 14가 아니고 여전히 maxSDK로 포함되어 있습니다. 이렇게하면 ICS는 이전 메뉴를 호환 가능하게 만들고 ActionBar를 기대하지 않습니다. –

+4

실제로 키는 대상이 11보다 작습니다. 오늘이 사실을 발견했습니다. 엄청난 두통! 우리는 ActionBar 테마를 사용하지 않으면 호환성 메뉴를 사용할 수 없다고 생각했습니다. 분명히 아닙니다! –

+0

얼마나 고통 스럽습니까! 이것은 나를 위해 메뉴와 함께 지금 가게되었다. 감사! 이것은 기본 목표를 1로 만듭니다. 이것은 당신이 당신의 응용 프로그램에서 사용했을 수있는 다른 호환되지 않는 위젯에 문제를 일으킬 수 있습니다. – Ramp

2

안드로이드 CDD, 컷오프에 따르면 옵션 메뉴를 표시하지 않는 새로운 동작은 targetSdkVersion> 10입니다. 옵션은 targetSdkVersion < = 10으로 레거시 모드에서 앱을 실행하거나 앱에 새로운 가이드 라인을 적용 할 수 있습니다 (예 : 앱에 메뉴 버튼을 추가하거나 액션 바). targetSdkVersion을 높이려면 대상 빌드 버전 (Eclipse의 프로젝트 속성)을 늘릴 필요가 없습니다.

11

android : targetSdkVersion을 "14"에서 "10"(11 이하)로 변경하면이 문제가 해결됩니다.

<uses-sdk android:minSdkVersion="3" 
     android:targetSdkVersion="10" />