3

我通过在我的 Java 代码中填充微调器来创建我的应用程序。我现在正在尝试将其转换为从我的 strings.xml 文件填充我的 Spinners。我关注了几个网站(示例 1示例 2),但无法让我的代码正常工作。

这些的主要问题是他们使用的 ArrayAdapter 的类型是<CharSequence>. 我可以使用<String>ArrayAdapters 以某种方式做到这一点吗?

这是我的 XML 文件中的数组:

<string-array name="anti_pump_ap_mode_array">
    <item>OFF</item>
    <item>Anti-Pump</item>
    <item>Motor Cut...</item>
</string-array>

这是我尝试过的代码:

apModeAdapter = new ArrayAdapter<String>(this, R.array.anti_pump_ap_mode_array, android.R.layout.simple_spinner_item );

apModeAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, R.array.anti_pump_ap_mode_array );

apModeAdapter = ArrayAdapter.createFromResource(this, android.R.layout.simple_spinner_item, R.array.anti_pump_ap_mode_array );

当然最后一个给了我一个错误,但前两个只是没有填充我的微调器。当我运行应用程序时,微调器只是空的。

4

2 回答 2

19

使用以下方式,交换数组 id 和布局 id。Textarray 资源 id 是第二个参数

apModeAdapter = ArrayAdapter.createFromResource(this, R.array.anti_pump_ap_mode_array, android.R.layout.simple_spinner_item,  );

编辑:对于第一种工作方式。从资源中获取字符串数组

Resources res = getResources();
apModeAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, res.getStringArray(R.array.anti_pump_ap_mode_array) );
于 2012-08-24T12:55:32.593 回答
2

CharSequence是一个String实现的接口,因此即使 APIcreateFromResource()返回接口类型,它仍然会填充您的String数组。如果您以后确实需要将结果作为字符串访问,则可以强制转换访问器。但是,大多数 Android UI 方法CharSequence也将其作为输入。

此外,参数是相反的。它应该如下所示:

ArrayAdapter.createFromResource(this, R.array.anti_pump_ap_mode_array, android.R.layout.simple_spinner_item );
于 2012-08-24T12:56:52.653 回答