Я разрабатываю для андроида 3+андроид бар действия onNavigationItemSelected
В моем действии бара у меня есть выпадающий список (см how to hide/unhide the actionbar list on android 3? для выпадающего списка я намерен). Проблема в том, что мне нужно выполнить определенное действие, когда пользователь что-то выбирает, но Android вызывает onNavigationItemSelected() как то, что он рисует, поэтому никакого выбора на самом деле не произошло.
Как я могу определить, действительно ли пользователь что-то нажал, и это не поддельный звонок от android?
public class ListDittaListener implements OnNavigationListener{
private BaseActivity activity;
private ListDittaListener()
{
}
public ListDittaListener(BaseActivity activity)
{
this.activity = activity;
}
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId)
{
MyApp appState = ((MyApp)this.activity.getApplicationContext());
appState.setDittaSelezionata((int) itemId);
SharedPreferences settings = this.activity.getSharedPreferences(MyApp.PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("ditta_id_selezionata", (int) itemId);
////////restart activity this.activity.recreate();
return false;
}
}
спасибо, но, как я написал в описании bounty, «я бы хотел избегайте использования счетчика и игнорирования первого вызова », это похоже на хак, я хотел бы понять, почему это происходит в первую очередь. – max4ever
У меня такая же проблема, и это ужасно раздражает, чтобы взломать ее таким образом. Есть ли цель такого поведения? –
Я использовал это решение для предотвращения ненужного повторного создания фрагментов, когда ориентация экрана меняется и теряется. См. [Здесь] (http://stackoverflow.com/a/14295474/963396). –