0

我有一个微调器,它根据列表中的选定项目设置图像视图资源。问题是当我去检索资源 ID 时,我总是得到一个 0 或未知成员。

选定的微调项()

    private void spinner_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e) {
        Spinner spinner = (Spinner)sender;
        string toast = string.Format("{0}", spinner.GetItemAtPosition(e.Position));
        var imageView = FindViewById<ImageView>(Resource.Id.stateView);
        var resourceId = 0;

        resourceId = Resources.GetIdentifier(toast, "drawable", PackageName);
        imageView.SetImageResource(resourceId);
        Toast.MakeText(this, toast, ToastLength.Long).Show();
    }

我已经尝试过 Resource.GetIdentifier(string, string, string) 的每种组合,但我没有任何运气。

该资源位于 Resource.Designer.cs 中,并且在调试时,如果我将资源 ID 的值编辑为 Resource.Designer.Drawable 中项目的 ID 之一,则该函数按预期工作。

有谁知道我做错了什么?

4

1 回答 1

0

从未使用过 Mono-Android,如果您已经尝试过,请道歉,但是...您确定您匹配的是 Resources.GetIdentifier 的正确语法吗?您是否也尝试过“drawable.png”(或任何扩展名)而不是“drawable”?

**编辑:

在常规的 Android 上,我相信在视图到位之前资源不会膨胀,resourceID 在它们出现在屏幕上之前是无效的。为了设置 imageView 的源,我们使用静态的东西...

imageView.setBackgroundResource(R.drawable.splash_screen);

其中“splash_screen.png”是存储在 res/drawable-small/ 下的文件

不确定您是否仔细检查了文件名,并且它在正确的文件夹中?

于 2012-11-06T19:25:18.670 回答