Android spinner.setAdapter生成资源$ NotFoundException

时间:2014-07-11 16:07:13

标签: android android-layout

问候我是Android开发的新手,长期的程序员(Ada,Objective-C,C ++,C#)和Java的新手。将ArrayAdapter应用于微调器时,我的代码会生成异常,即: spinner.setAdapter(适配器);这会导致我的Android应用崩溃。毋庸置疑,不会显示微调器。

我已经搜索过StackOverflow并且还没有找到任何确切的答案。代码(下面)实际上是Android Developers Guide

的逐字记录
public static class PlaceholderFragment extends Fragment {

public PlaceholderFragment() {
}

@Override
public View onCreateView(
        LayoutInflater inflater, 
        ViewGroup container,
        Bundle savedInstanceState) 
{
    View rootView = inflater.inflate(R.layout.fragment_main, container, false);

    // Get the spinner id.
    Spinner spinner = (Spinner)rootView.findViewById(R.id.spinner1);

    // Create an ArrayAdapter using the string array and a default spinner layout
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this.getActivity(),
    R.array.mission_type_array, R.id.spinner1);

    // Specify the layout to use when the list of choices appears
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    // Apply the adapter to the spinner
    spinner.setAdapter(adapter);

    return rootView;

}

微调器的数组数据位于资源文件中:res \ values \ mission_types.xml,它是示例中的逐字。

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="mission_type_array">
    <item>Mercury</item>
    <item>Venus</item>
    <item>Earth</item>
    <item>Mars</item>
    <item>Jupiter</item>
    <item>Saturn</item>
    <item>Uranus</item>
    <item>Neptune</item>
</string-array>   
</resources>

执行代码时,spinner.setAdapter(adapter)会生成异常。

LogCat(下方)表示:

Resource ID #0x7f090006 type #0x12 is not valid
E/AndroidRuntime(6373):  at android.content.res.Resources.loadXmlResourceParser

在调试器中,我设置了一个断点并逐步执行代码。在Variables窗口中,我可以单击微调器并在详细信息窗格中获取信息:android.widget.Spinner {b2dce690 VFED..C。 ......一世。 0,0-0,0#7f090006 app:id / spinner1}。十六进制数#7f09对应于上面的LogCat消息,表示&#34;无效&#34;。

在Debugger Variables窗口中,我还可以深入查看微调器和适配器,以验证资源文件中的数据是否已加载。

那么为什么,锭床工人&#34;无效&#34;以及如何纠正这个问题呢?

提前感谢您的帮助。我希望将来能够回报。 欢呼声,

1 个答案:

答案 0 :(得分:2)

createFromResoruce的第三个参数是布局ID,用于创建视图,而不是微调器的id。您可以使用android.R.layout.simple_spinner_item