2014-12-28 10 views
5

Stavo seguendo questo tutorial qui - http://developer.android.com/training/implementing-navigation/ancestral.html - per implementare Up Navigation. Lo stesso vale per l'utente che preme il pulsante Indietro sul telefono, ma il metodo onBackPressed() non si attiva quando viene premuto il pulsante "Su". Nel tutorial mostrano che intrappoli R.id.home nel metodo onOptionsItemSelected(). Questa pagina web - http://developer.android.com/reference/android/R.id.html - mostra che il valore di R.id.home deve essere uguale a 16908332, ma non nella mia app. Nel codice qui sotto se uso R.id.home fallisce. Se ho hard-code in 16908332 funziona. Per me R.id.home valuta 21312330724. Secondo la pagina, tutti i valori di R.id iniziano 1690. Detesto la codifica hard in un valore per un valore predefinito, ma non sono sicuro di cos'altro fare. Questo potrebbe causare problemi lungo la strada? Sto facendo qualcosa di sbagliato? è un insetto?Valutazione di R.id.home

Greg

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    //noinspection SimplifiableIfStatement 
    if (id == R.id.home) {//16908332 
     Intent upIntent = NavUtils.getParentActivityIntent(this); 

     upIntent.putExtra(CAT_ID, CatID); 
     upIntent.putExtra(USER_ID, UserID); 
     upIntent.putExtra(LIST_ID, ListID); 
     setResult(RESULT_OK, upIntent); 
     NavUtils.navigateUpTo(this, upIntent); 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
+5

noti che si dovrebbe confrontare la vostra id a 'android.id.home', non la vostra abitudine R.id Variabile .home, se ne hai uno. Controlla lo spazio dei nomi dell'importazione R nella parte superiore della tua classe. Se hai la tua importazione R personalizzata, devi definire rigorosamente il tuo id come android.id.home. – joao2fast4u

+1

Grazie. Ciò che funzionava era Android.R.id.home. Questa è una nuova attività che non ha quasi nulla in essa, specialmente nessuna variabile R.id.home personalizzata. Le uniche importazioni sono content.Intent, support.v4.app.NavUtils, support.v7.app.ActionBarActivity, os.Bundle, view.Menu, view.MenuItem, widget.Toast – user1091524

risposta

25

devi confrontarlo con l'androide uno:

if (id == android.R.id.home){ 
    ... 
}