2012-05-27 4 views
9

Ich ging durch einige Tutorials, und in der Android Doc, heißt es nicht auf LayoutInflater direkt zugreifen, wenn es instanziiert. Beispiel aus dem Doc google:Was ist der Unterschied zwischen dem Aufruf von LayoutInflater direkt und nicht?

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

Das Tutorial ich durchgemacht habe, lautet:

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

Also, was ich wirklich nicht verstehe, ist, was der Unterschied außer dem offensichtlichen anderen Code ist. Jede Erklärung sehr geschätzt. Ich gehe davon aus, dass der Android Doc der ist, dem wir folgen, aber ich bin mir nicht sicher, ob es einen Unterschied macht.

Antwort

17

Wenn Sie die Android Quelle öffnen können Sie sehen, dass die LayoutInflator.from Methode sieht so aus:

/** 
* 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; 
} 

Das heißt, die zwei Zeilen Code in Ihrer Frage tun Sie das Gleiche. Nicht sicher, was das Tutorial, das Sie lesen, genau sagt, aber ich sehe keinen Unterschied in der Funktionalität. Die Verwendung der from Methode ist nett, da es etwas weniger Tipparbeit erfordert, das ist es.

+0

Haha! Wow, danke! Das hat wirklich geholfen. Ich hätte eine andere Frage gehabt, aber Sie haben sogar diese Frage beantwortet. Sehr geschätzt! – Andy

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

Sie erhalten LayoutInflater Service Provider von System Manager

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

Sie verwenden static Methode von LayoutInflater Class

würde ich sagen, dass Unterschied nur in Code ist und wie Sie schreiben, um diese auch Aufruf-Stack, sondern Ergebnis ist gleich - Sie erhalten LayoutInflater.

Mehr über this

Grüße

Verwandte Themen