使用getIdentifier(),资源ID始终为0

时间:2012-12-30 23:42:30

标签: android

我有以下代码:

dataAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
        if (view.getId() == R.id.listitem_exercise_image) {
            String image_1 = cursor.getString(columnIndex);
            Log.d("MyApp", "image_1 = " + image_1);
            int resourceId = getResources().getIdentifier(image_1 , "drawable", getPackageName());
            Log.d("MyApp", "image_1 id = " + String.valueOf(resourceId));
            return true;
        }

        return false;
    }
});

现在,在日志中,它显示了我的Log.d

12-30 23:34:04.995: D/MyApp(8354): image_1 = abdominal_4_point_drawing_in_1.png
12-30 23:34:05.015: D/MyApp(8354): image_1 id = 0
12-30 23:34:05.165: D/MyApp(8354): image_1 = alternate_hammer_curl_1.png
12-30 23:34:05.195: D/MyApp(8354): image_1 id = 0
12-30 23:34:05.325: D/MyApp(8354): image_1 = alternate_incline_dumbbell_curl_1.png
12-30 23:34:05.335: D/MyApp(8354): image_1 id = 0

现在所有这些.png文件都存在于“drawable”文件夹中。他们肯定在那个文件夹里。我知道这是因为我是那个把它们放进那个文件夹的人,我也只是仔细检查了一下。我还运行了一个Project Clean。

那么为什么每一个资源ID都会为0?

1 个答案:

答案 0 :(得分:3)

资源标识符不以".png"结尾,剥离扩展并完成其他一些转换。现在,如果image_1位于"abdominal_4_point_drawing_in_1",并且有一个生成R.drawable.abdominal_4_point_drawing_in_1的资源,则可以使用。