获取像这样的小部件的引用有什么区别:
TableRow row = findViewById(R.id.table_row);
和
TableRow row = (TableRow)LayoutInflater.from(this).inflate(R.layout.table_row, null);
当TableRow
是其布局的根或它只是布局的一小部分时,是否也存在差异?
答案 0 :(得分:3)
有什么区别......
第一个是检索活动中的现有小部件。
第二个是读取XML文件并正在创建 new 小部件。第二个也有些错误,因为你不经常想要使用LayoutInflater.from()
(通常在你的getLayoutInflater()
上使用Activity
),而你很少想要使用inflate()
变量(如果您不提供父容器,则具有根RelativeLayout
元素的布局资源将出现异常)。
当TableRow是其布局的根目录还是只是布局的一小部分时,是否存在差异?
是。差异与以前相同:检索现有小部件或创建新小部件。
答案 1 :(得分:3)
1)使用
TableRow row = findViewById(R.id.table_row);
您只是简单地获取{id> R.id.table_row View
的参考,该参考已在当前布局中创建并膨胀(其中) 当前表示Activtiy
的布局或您定义的View
。
2)使用
TableRow row = (TableRow)LayoutInflater.from(this).inflate(R.layout.table_row, null);
您膨胀(这意味着创建)基于 R.layout.table_row 中包含的XML定义的新视图层次结构。由于您未在 inflate()方法中传递父View参数,因此您需要手动将结果层次结构添加到现有容器中。