2016-02-22 26 views

Odpowiedz

6

Obie są takie same. Druga wersja to wygodna i krótka metoda wykonania zadania. Jeśli pojawi się kod źródłowy View.inflate() metodzie można znaleźć:

/** 
    * Inflate a view from an XML resource. This convenience method wraps the {@link 
    * LayoutInflater} class, which provides a full range of options for view inflation. 
    * 
    * @param context The Context object for your activity or application. 
    * @param resource The resource ID to inflate 
    * @param root A view group that will be the parent. Used to properly inflate the 
    * layout_* parameters. 
    * @see LayoutInflater 
    */ 
    public static View inflate(Context context, int resource, ViewGroup root) { 
     LayoutInflater factory = LayoutInflater.from(context); 
     return factory.inflate(resource, root); 
    } 

co faktycznie robi to samo zadanie w backend, 1. Metoda wspomniałeś robi.

1

Są takie same i zrobić to samo

W View.java klasy

public static View inflate(Context context, @LayoutRes int resource, ViewGroup root) { 
     LayoutInflater factory = LayoutInflater.from(context); 
     return factory.inflate(resource, root); 
    } 

i LayoutInflater.from(context) zwrócić przedmiot LayoutInflator. który jest taki sam jak wywołanie metody getLayoutInflator().

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