【问题标题】:Android Storing Drawable In ArrayAndroid将Drawable存储在数组中
【发布时间】:2023-12-07 21:21:01
【问题描述】:

我目前正在尝试访问和使用图像来代替我正在使用的 Spinner 中的文本。 如果我要专门使用文本而不是可绘制对象,则以下代码有效。

我之前引用过这个问题:Storing R.drawable IDs in XML array

希望能解决我的问题,但是我无法准确找出哪里出错了。我似乎不断得到:

Error: No resource found that matches the given name (at '^index_1' with value '@drawable/ic_launcher.png')  

等,对于每个图像。每个drawable都存在并且在适当的位置,代码显然超出了我的理解。

<string-array name="rating_array">
        <item>N/A</item>
        <item>@drawable/ic_launcher.png</item>
        <item>@drawable/smile.png</item>
        <item>@drawable/stale.png</item>
        <item>@drawable/sad.png</item>
        <item>@drawable/angry.png</item>
    </string-array>

[编辑]

我已经摆脱了 .png 扩展名。但是,我仍然收到相同的错误。 还有什么建议吗?

还得到:

我摆脱了这些错误,我现在得到:

\res\layout\activity_main.xml:12:错误:错误:未找到与给定名称匹配的资源(位于“contentDescription”,值为“@string/rate_main”)。 \res\layout\activity_main.xml:28:错误:错误:找不到与给定名称匹配的资源(在“条目”处,值为“@array/category_array”)。 \res\layout\activity_main.xml:36:错误:错误:找不到与给定名称匹配的资源(在“条目”处,值为“@array/rating_array”)。 res\layout\activity_main.xml:46:错误:错误:找不到与给定名称匹配的资源(在“条目”处,值为“@array/descriptor_array”)。 res\menu\main.xml:3:错误:错误:找不到与给定名称匹配的资源(在“标题”处,值为“@string/action_settings”)。

作为错误,但是当我删除这些列表文件时,我没有问题。 此外,由于某种原因,它说它会影响我的其他数组,但是“rating_array”是唯一一个不是标准文本列表的数组。

关于此的完整代码:

字符串.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string-array name="rating_array">
        <item>N/A</item>

    </string-array>

    <string-array name="descriptor_array">
        <item>N/A</item>
        <item>Price</item>
        <item>Service</item>
    </string-array>

    <string-array name="category_array">
        <item>N/A</item>
        <item>Restaurants</item>
        <item>Hotels</item>
        <item>Theater</item>
        <item>Shopping</item>
    </string-array>



    <string name="app_name">W!NK</string>
    <string name="action_settings">Settings</string>



    <string name="rate_main">Rate</string>


</resources>

MainActivity.Java

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.Spinner;

public class MainActivity extends Activity {

    private Spinner spinbutton1, spinbutton2, spinbutton3;





    @Override
    protected void onCreate(Bundle savedInstanceState) {        
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);




    }

    public void addListenerOnSpinnerItemSelection(){
        spinbutton1 = (Spinner) findViewById(R.id.spinbutton1);
            spinbutton1.setOnItemSelectedListener(new CustomOnItemSelectedListener());
        spinbutton2 = (Spinner) findViewById(R.id.spinbutton2);
            spinbutton2.setOnItemSelectedListener(new CustomOnItemSelectedListener());
        spinbutton3 = (Spinner) findViewById(R.id.spinbutton3);
            spinbutton3.setOnItemSelectedListener(new CustomOnItemSelectedListener());
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }




}

【问题讨论】:

  • 发布您的代码以访问上述内容

标签: android spinner drawable arrays


【解决方案1】:

错误:

错误:未找到与给定名称匹配的资源(位于 '^index_1' 带有值'@drawable/ic_launcher.png')

因为您当前正在通过string-array 中的可绘制名称传递可绘制图像扩展名(.png)。所以你需要删除你在@987654322中使用的可绘制名称的文件扩展名(.png)@将其更改为:

<string-array name="rating_array">
        <item>N/A</item>
        <item>@drawable/ic_launcher</item>
        <item>@drawable/smile</item>
        <item>@drawable/stale</item>
        <item>@drawable/sad</item>
        <item>@drawable/angry</item>
    </string-array>

【讨论】: