Android getIdentifier方法在片段中返回0

时间:2014-04-04 18:50:41

标签: android android-fragments android-resources uniqueidentifier

我知道有很多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(),使用没有变量的显式字符串......似乎无效。

1 个答案:

答案 0 :(得分:1)

您没有传递R.id.id_name,只是传递id_name

String idString = "row" + row + "_col" + col;

第二个参数告诉系统你正在寻找一个id,第三个参数告诉系统要使用哪个资源R文件。