这不是问题,而是更多的效率问题。我的Android应用程序的XML布局中有多个TextView(其中2个)。我的问题是,我可以在一行中选择多个TextView,findViewById
多个TextView吗?
此 对我的问题有效吗?
TextView title, darkThemeTitle = findViewById(R.id.title); findViewById(R.id.darkThemeTitle);
答案 0 :(得分:1)
唯一的建议是使用模板ID来查找视图:
max_id
这将查找当前活动的所有视图。
或者您可以使用TextView[] themedViews = new int[NUMBER_OF_THEMES];
for (int k = 0; k < NUMBER_OF_THEMES; k++)
themedViews[k] = findViewById(context.getResources().getIdentifier("some_prefix" + String.valueOf(k), "id", packageName));
查找指定视图的子视图。
答案 1 :(得分:1)
在代码中使用TextView title, darkThemeTitle = findViewById(R.id.title); findViewById(R.id.darkThemeTitle);
时。
此行TextView title, darkThemeTitle = (TextView) findViewById(R.id.title);
会显示变量&#39;标题&#39;可能尚未初始化。在代码中title
从未初始化。
findViewById(R.id.tab_layout);
会在您的代码中返回查看。它永远不会在您的代码中返回darkThemeTitle
。
你可以这样做。
TextView title = (TextView) findViewById(R.id.title); TextView darkThemeTitle = (TextView) findViewById(R.id.darkThemeTitle);
另一种方式
TextView title = null, darkThemeTitle = null;
TextView[] textViews = {title, darkThemeTitle};
Integer[] ids = {R.id.title, R.id.darkThemeTitle};
for (int i = 0; i < textViews.length; i++) {
textViews[i] = (TextView) findViewById(ids[i]);
}
答案 2 :(得分:1)
我不鼓励你这样做,因为其他程序员阅读起来比较困难,并且不会节省你很多时间。使用:
TextView title = findViewById(R.id.title), darkThemeTitle = findViewById(R.id.darkThemeTitle);
答案 3 :(得分:0)
你尝试过使用ButterKnife吗?这个库可以帮助您进行依赖注入,因此您不必担心findViewById
。只需调用@BindView(view_id)
以及要绑定的变量的类型和名称。
@BindView(R.id.title)
TextView title;
@BindView(R.id.darkThemeTitle)
TextView darkThemeTitle;
请记住,您需要在build.gradle
文件中添加依赖项
compile 'com.jakewharton:butterknife:8.8.1'
并在您活动的onCreate
中调用绑定方法
ButterKnife.bind(this);