3

FragmentActivity에 ActionBar 버튼을 추가하려고하는데 잘못된 작업을 파악할 수 없습니다. 내가 보는 모든 기본 메뉴 버튼 내 버튼 액션 바에서되지 않고 응용 프로그램을 ... 실행할 때FragmentActivity Action Bar Options Menu

FragmentActivity :

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.animalsmenu,menu); 
    return true; 
} 

XML 파일 :

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 
<item 
    android:id="@+id/dogs" 
    android:title="Dogs" 
    android:orderInCategory="1" 
    app:showAsAction="always"> 
</item> 

+0

여기 내 대답 좀 봐 : http://stackoverflow.com/questions/25700575/acessing-the-options-menu-from-a-fragment-android/25700901#25700901 – XDnl

+0

@XDnl : 질문 (따라 OP로)는'FragmentActivity'에서 코드를 보여주고'Fragment'는 보여주지 않습니다. – Squonk

답변

5

FragmentActivity 클래스는 Activity 클래스를 확장 (파생)합니다. ActivityonCreateOptionsMenu(Menu menu) 방법에 대한 설명서

기본 구현은 표준 시스템 메뉴 항목과 메뉴를 채 웁니다 ... 다음을 말한다. 이들은 CATEGORY_SYSTEM 그룹에 배치되어 응용 프로그램 정의 메뉴 항목과 함께 올바르게 정렬됩니다. 파생 클래스는 항상 기본 구현을 호출해야합니다. 즉

, 당신의 코드를 변경 ...

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.animalsmenu, menu); 
    super.onCreateOptionsMenu(menu); 
    return true; 
} 

이 재정의 된 메서드에 전달 된 Menu로 메뉴 항목을 부풀려 다음은 부모에게 전달합니다 (super) 버전의 메소드입니다.

+0

그래도 답변을 주셔서 감사합니다. – james

+0

@james : 직접'FragmentActivity'를 확장하고 있습니까, 아니면'FragmentActivity'를 확장 한 자체 클래스를 가지고 있습니까? – Squonk

+0

저는 직접 FragmentActivity를 확장하고 있습니다 – james

2

올린 사람 : Fragment Documents

public void setHasOptionsMenu (boolean hasMenu)이 프래그먼트가 onCreateOptionsMenu (Menu, MenuInflater) 및 관련 메소드에 대한 호출을 수신하여 options 메뉴를 채우는 데 참여하려고 함을보고합니다.

따라서 onCreate()setHasOptionsMenu(true)으로 전화해야합니다.

은 또는 이전 버전과의 호환성을 위해이 onCreate() 또는 나중에 onActivityCreated() .Try에서 onCreate() 또는 onActivityCreated() 중이 사용의 끝에서 가능한 늦게이 통화를하는 것이 좋습니다.

희망이 도움이됩니다.

+3

내 onCreate() 내부에서 setHasOptionsMenu (true)를 사용할 수 없습니다. 이유는 무엇입니까? 아마도 FragmentActivity이고 일반적인 조각이 아니기 때문일 수 있습니까? – james

13

FragmentActivity 대신 MainActivityActionBarActivity으로 확장하십시오.

ActionBarActivity 자체는 FragmentActivity이므로 확장해도됩니다.

관련 문제