두 개의 액티비티가있는 프래그먼트를 호스팅하는 응용 프로그램이 있습니다. 내 주요 활동 하나의 조각을 호스팅하고 조각을 정의하고 도구 모음에 아무 문제없이 이동 메뉴를 팽창시킬 수 있습니다.조각의 onCreateOptionsMenu 메서드가 호출되지 않습니다
그러나 두 번째 활동에서는 항목간에 가로 스크롤을 허용하기 위해 FragmentStatePagerAdapter
을 사용하지만 제 조각은 도구 모음에서 메뉴를 정의 할 수없는 것 같습니다.
수표 :
- 내 전체 응용 프로그램은 a theme (
android:theme="@style/AppTheme"
) based onTheme.AppCompat.Light.DarkActionBar
를 사용하도록 설정되어 있습니다. - 내 조각
android.support.v4.app.Fragment
setHasOptionsMenu(true);
이 조각의onCreate()
방법에서 called입니다 확장- hosting activity이
AppCompatActivity
를 확장하고 - 나의 단편 overrides
void onCreateOptionsMenu(Menu, MenuInflater)
, 하지만이 방법은 같다가 호출되지 않을 수
도구 모음 메뉴 자체를 구현하지 않습니다
You can have a look at the commit that is supposed to add that menu on GitHub. .
CrimeFragment.java
:
public class CrimeFragment extends Fragment {
// ...
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "onCreate()");
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
UUID id = (UUID) getArguments().getSerializable(ARG_CRIME_ID);
Log.d(TAG, String.format("Crime id in intent's extra: %s", id.toString()));
mCrime = CrimeLab.get(getActivity()).getCrime(id);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
Log.d(TAG, "onCreateOptionsMenu()"); // <= Never shows in the Android Monitor
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.fragment_crime, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_item_delete_crime:
CrimeLab.get(getActivity()).deleteCrime(mCrime);
getActivity().finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
// ...
}
뭔가 거기에 내가 잘못 여기하고있어 오류의 원인이 될 수있는 코드의 어떤 부분에서 확인) 여기
큰 라인은 무엇입니까?
단편 메뉴를 사용하려면 onPrepareOptionMenu() 메소드를 사용해야합니다. –
@Divyesh 고맙습니다. 불행히도, 내 조각에서 ('s' :'onPrepareOptionsMenu'를 사용하여) 그 메소드를 오버라이드 (override)하려고 시도한 후에도, 호출되지 않습니다. –
두번째 Activity는 메뉴 항목을 정의했는지 여부를 결정합니까? –