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