sto sviluppando per Android 3+barra d'azione androide onNavigationItemSelected
Nella mia barra delle operazioni ho un elenco a discesa (vedi how to hide/unhide the actionbar list on android 3? per la discesa ho intenzione). Il problema è che ho bisogno di fare una certa azione quando l'utente seleziona qualcosa, ma Android chiama onNavigationItemSelected() come soons mentre disegna la vista, quindi nessuna selezione effettivamente avvenuta.
Come posso rilevare se l'utente ha effettivamente premuto qualcosa e non è una chiamata falsa da 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;
}
}
grazie ma come ho scritto nella descrizione di taglie, "mi piacerebbe evitare di usare un contatore e ignorare la prima chiamata ", questo sembra più un trucco, mi piacerebbe capire perché questo succede in primo luogo – max4ever
Ho lo stesso problema ed è terribilmente fastidioso di hackerarlo in questo modo. C'è uno scopo per un simile comportamento? –
Ho usato questa soluzione per evitare che i Frammenti vengano ricreati inutilmente due volte quando l'orientamento dello schermo cambia e perde il loro stato. Vedi [qui] (http://stackoverflow.com/a/14295474/963396). –