What is the difference between calling LayoutInflater directly and not?

前端 未结 2 1693
谎友^
谎友^ 2021-02-14 22:44

I went through some tutorials, and in the Android Doc, it says not to access LayoutInflater directly when instantiating it. Example from the google Doc:

LayoutIn         


        
相关标签:
2条回答
  • 2021-02-14 22:59

    If you open up the Android source you can see that the LayoutInflator.from method looks like so:

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

    That means the two lines of code in your question do the same thing. Not sure what the tutorial you read says exactly but I don't see any difference in functionality. Using the from method is nice since it requires a little less typing, that's it.

    0 讨论(0)
  • 2021-02-14 23:05
    LayoutInflater inflater = (LayoutInflater)context.getSystemService
      (Context.LAYOUT_INFLATER_SERVICE);
    

    You are getting LayoutInflater Service Provider from System Manager

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

    You are using static method from LayoutInflater Class

    I would say that difference is only in code and how you write this also calling stack but result is same - you will get LayoutInflater.

    More about this

    Regards

    0 讨论(0)
提交回复
热议问题