Эта ветка немного устарела, и я не смог применить предложенное исправление (или найти лучшее).Я использую ActionBarSherlock 4.2, но у меня все еще остается проблема при входе в систему на устройствах ICS, где меню параметров является наложением: я не мог понять, как принудительно сделать недействительным меню только ПОСЛЕ закрытия действия входа (и приложение имеетопределил подписанное в измененном состоянии).
Я решил проблему с флагом, чтобы лишить законной силы меню onResume
.Я чувствую, что использование флага - это хак, но это лучше, чем аннулирование при каждом резюме.
@Override
protected void onResume()
{
if ( checkLoginState == Boolean.TRUE )
{
invalidateOptionsMenu();
checkLoginState = Boolean.FALSE;
}
super.onResume();
}
Затем в onOptionsItemSelected
я устанавливаю флаг:
@Override
public boolean onOptionsItemSelected( MenuItem item )
{
// Handle item selection
switch ( item.getItemId() )
{
case R.id.actionbar_settings_signin_out:
if (isUserLoggedIn() == Boolean.TRUE )
{
logout();
validateOptionsMenu();
}
else
{
// set the flag so that on resume we update the options menu
checkLoginState = Boolean.TRUE;
startSignInActivity();
}
return true;
Это работаетдля меня, но мне любопытно услышать, решили ли другие это лучше.