Меню параметров не отображается в ICS с использованием библиотеки совместимости
Мне не удается отобразить меню параметров во фрагменте в ICS в проекте, в котором используется библиотека android-support-v4.jar. Я тестирую на телефоне Galaxy Nexus.
Мы не используем панель действий, и нам нужно, чтобы приложение было совместимо с 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;
}
// ...
}
Целевая версия ОС в файле манифеста:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="14"/>
3 ответа
Удаление android:targetSdkVersion="14"
из манифеста снова включает кнопку меню настроек.
Это потому, что у меня была тема @android:style/Theme.Black.NoTitleBar
указано в моем манифесте - с android:targetSdkVersion из 14, меню опций вставляется в меню панели действий, в отличие от кнопки меню опций на панели кнопок в нижней части экрана, и тема удаляет действие название и панель действий.
Панель действий может быть удалена, хотя я не уверен, что это решит проблему, так как мне еще предстоит заставить ее работать так, чтобы она была совместима между версиями 2.2 - 4.
Просто измените android:targetSdkVersion с "14" на "10" (меньше 11), и эта проблема будет решена.
<uses-sdk android:minSdkVersion="3"
android:targetSdkVersion="10" />
Согласно Android CDD, пороговое значение для нового поведения не показывать меню опций - targetSdkVersion > 10. Вы можете либо запустить свое приложение в устаревшем режиме с targetSdkVersion <= 10, либо адаптировать свое приложение к новым правилам (например, добавить кнопка меню в вашем приложении или используйте панель действий). Обратите внимание, что вам не нужно увеличивать целевую версию сборки (свойства проекта в eclipse), чтобы увеличить targetSdkVersion.