What is the correct term when calling a widget from xml in Android?

我与影子孤独终老i 提交于 2019-12-02 17:21:28

问题


I'm still very new to Android, but I am trying to keep up by using tutorials on YouTube. A bunch of people throw around the phrase "inflate the xml". I started to use this phrase as well, and I feel as though I'm not doing it right.

The only time I say "inflate the xml" is when telling someone to write the code to use a widget from the xml in java code.

So if I see a button on someones layout, with the id of button01, and I tell them to "inflate the xml" I expect Button mybutton = (Button) findViewById(R.id.button01);

Is this wrong of me?

EDIT: It seems as though this is not the correct phrase. Does one exist?


回答1:


"Inflating" a layout refers to the process of having the Android framework convert a layout in XML format into objects corresponding to the different views in the layout.

To "inflate" a layout you need:

  • a layout in XML format

    res/layout/main.xml

  • access to an inflator object

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

You then need to run the inflation on the layout

   View view = inflator.inflate(R.layout.main)

After that you can access the objects using "findViewById"

    Button mybutton = (Button) view.findViewById(R.id.button01);

The Activity class provides a helper method which both gets the inflator and inflates the layout

    setContentView(R.layout.main)

When using the "setContentView" method, the activity sets a default view which is used when calling "findViewById"




回答2:


Sort of. When someone says to inflate a layout (or as you say, inflate the xml), the piece of code that generally comes to mind is something like:

View view = getLayoutInflater().inflate(R.layout.mylayout, null);

Another way to obtain the inflater would be:

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

You would then proceed with

Button mybutton = (Button) view.findViewById(R.id.button01);



回答3:


When you are using Button mybutton = (Button) findViewById(R.id.button01);, you are basically casting the button you created in your code to the button you defined in the xml.

I don't really know if "inflating" is the correct term. I think of it as a way to link what you have placed in your xml layout with your functionality you have defined in your java code.



来源:https://stackoverflow.com/questions/11217454/what-is-the-correct-term-when-calling-a-widget-from-xml-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!