2013-02-18 2 views
7

mi dispiace, questa domanda è per quelli di voi a lavorare su Eclipse con accesso ai codici di esempio ApiDemo.
In particolare, sto cercando di fondare un'attività frammento sul campione chiamato FragmentLayoutStrano FragmentTransaction nella classe FragmentLayout dal ApiDemos campione

Il seguente codice è problematico per me (è possibile trovare il codice completo nel ApiDemo FragmentLayout.java, ShowDetails() metodo):

   // Execute a transaction, replacing any existing fragment 
       // with this one inside the frame. 
       FragmentTransaction ft = getFragmentManager().beginTransaction(); 
       if (index == 0) { 
        ft.replace(R.id.details, details); 
       } else { 
        ft.replace(R.id.a_item, details); 
       } 
       ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
       ft.commit(); 

Due domande che ho:

  1. Qual è la differenza tra index == 0 e index != 0?

  2. La risorsa R.id_a_item (solo l'occorrenza in tutti gli ApiDemos, dopo averla cercata) appartiene a qualche tipo di risorsa di scelta rapida del menu, non è chiaro perché venga utilizzata qui.

La guida di android.developers non spiega questo bit di codice.

risposta

5

Qual è la differenza tra indice == 0 e indice! = 0?

non dovrebbero esserci differenze tra la posizione 0 e le altre posizioni della lista come il codice è impostato semplicemente sostituire la scheda precedente frammento con uno nuovo.

La risorsa R.id_a_item (avvenimento unico in tutte le ApiDemos, dopo ricerca di esso) appartiene a un qualche tipo di risorsa di menu di scelta rapida, non affatto chiaro il motivo per cui è qui utilizzato.

Molto probabilmente questo è un errore nel campione utilizzando tale id sarà un'eccezione, perché non esiste nel layout corrente (ho eseguito il progetto API Demos trovato sul 4.2 emulatore e getta che nessuna vista trovata eccezione ... ecc per quell'id). Probabilmente una scivolata nell'ultima versione dei campioni come la parte di codice che la tua domanda non esiste in altre versioni.

+2

Sì, questo è quello che pensavo. Ma non si sa mai con Android, secondo la legge di Murphy se non avessi chiesto a questo proposito, sarebbe risultato che la roba 'if (index == 0)' blocca l'app o cancella la RAM interna :-) – ilomambo