我知道有很多getIdentifier问题要求类似的事情。我尝试了很多东西,但是我的结果仍然是0。我有一个片段,该片段包含一个表,并且该表充满了“空”视图。我试图找到一个视图,并根据在一些非常简单的switch语句中设置的row和col变量填充它(为清楚起见,排除)。我有方法:
@Override
public void onAttach(Activity activity){
super.onAttach(activity);
int row;
int col;
... methodology that sets row and count ...
String idString = "R.id.row" + row + "_col" + col;
int id = getResources().getIdentifier(idString, "id", activity.getBaseContext().getPackageName());
int rID = R.id.row1_col1;
Log.d(TAG, "id = " + id + " and rID = " + rID + " with " + idString +
" for row " + row + " x col " + col);
}
其中int id应该基于它的row / col设置为视图的资源id。 如果我测试row1,col1我得到以下日志输出
id = 0 and rID = 2131034203 with idString R.id.row1_col1 for row 1 x col 1
这告诉我资源在那里,我的行和col变量在我的方法中得到了适当的设置,并且我的字符串设置正确使用getIdentifier(据我所知)。那么,无论我测试哪一行和哪一行,我总是得到0?
我尝试将“id”更改为其他类型,将getResources()更改为activity.getResources(),使用没有变量的显式字符串......似乎无效。
答案 0 :(得分:1)
您没有传递R.id.id_name
,只是传递id_name
:
String idString = "row" + row + "_col" + col;
第二个参数告诉系统你正在寻找一个id,第三个参数告诉系统要使用哪个资源R文件。