2012-05-27 12 views
9

Sono passato attraverso alcuni tutorial e nel documento Android, si dice di non accedere a LayoutInflater direttamente durante l'istanziazione. Esempio dalla Doc google:Qual è la differenza tra chiamare LayoutInflater direttamente e non?

LayoutInflater inflater = (LayoutInflater)context.getSystemService 
    (Context.LAYOUT_INFLATER_SERVICE); 

Il tutorial che ho passato è questo:

LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 

Quindi quello che non capisco è quale sia la differenza oltre al codice diverso ovvia. Qualche spiegazione molto apprezzata. Presumo che il Doc Android dovrebbe essere quello che seguiamo, ma non sono sicuro che faccia la differenza.

risposta

17

Se si apre il source Android si può vedere che il metodo LayoutInflator.from assomiglia così:

/** 
* Obtains the LayoutInflater from the given context. 
*/ 
public static LayoutInflater from(Context context) { 
    LayoutInflater LayoutInflater = 
      (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    if (LayoutInflater == null) { 
     throw new AssertionError("LayoutInflater not found."); 
    } 
    return LayoutInflater; 
} 

Ciò significa che le due righe di codice nella tua domanda fai la stessa cosa Non sono sicuro di cosa dice esattamente il tutorial che hai letto, ma non vedo alcuna differenza nella funzionalità. L'utilizzo del metodo from è piacevole poiché richiede un po 'meno di digitazione, il gioco è fatto.

+0

Haha! Wow grazie! Questo mi ha davvero aiutato. Avrei avuto un'altra domanda, ma tu hai persino risposto a quella. Molto apprezzato! – Andy

2
LayoutInflater inflater = (LayoutInflater)context.getSystemService 
    (Context.LAYOUT_INFLATER_SERVICE); 

Hai trovato LayoutInflater Service Provider da System Manager

LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 

Si utilizza static metodo dal LayoutInflater Class

Direi che differenza è solo nel codice e come si scrive questo stack anche chiamando, ma risultato è lo stesso - otterrete LayoutInflater.

più su this

saluti

Problemi correlati