问候我是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;以及如何纠正这个问题呢?
提前感谢您的帮助。我希望将来能够回报。 欢呼声,
答案 0 :(得分:2)
createFromResoruce
的第三个参数是布局ID,用于创建视图,而不是微调器的id。您可以使用android.R.layout.simple_spinner_item