我得到了java.util.ArrayList.throwIndexOutOfBoundsException和一个没有我的代码的堆栈跟踪

时间:2015-05-22 07:22:15

标签: java android

我有一个关于字典的android应用程序,我在几个月内从Crashlytics得到了这个错误几次,但我不能自己重现它。

java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2
   at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
   at java.util.Arrays$ArrayList.get(Arrays.java:66)
   at android.widget.ArrayAdapter.getItem(ArrayAdapter.java:337)
   at android.widget.Spinner$DropDownAdapter.getItem(Spinner.java:841)
   at android.widget.AdapterView.getItemAtPosition(AdapterView.java:795)
   at android.view.ViewRootImpl.performClickChild(ViewRootImpl.java:880)
   at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3399)
   at android.os.Handler.dispatchMessage(Handler.java:122)
   at android.os.Looper.loop(Looper.java:136)
   at android.app.ActivityThread.main(ActivityThread.java:5122)
   at java.lang.reflect.Method.invokeNative(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:515)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
   at dalvik.system.NativeStart.main(NativeStart.java)

没有我的代码。我认为它是关于我创造的微调器和适配器。我有2个旋转器,有2个成员(实际上他们是相同的东西,但在不同的页面)所以我不知道哪一个导致这个错误。但是,我对它们进行了多次测试,即使只进行一次也无法发生此错误。每个微调器都使用不同的适配器。这是定义微调器成员的代码。它们是相同的,成员是固定的。

//////// This is in a fragment /////////////////
<Spinner
            android:id="@+id/spDictionary"
            android:layout_width="wrap_content"
            android:layout_height="@dimen/fragment_dictionary_spinner_height"
            android:gravity="center"
            android:entries="@array/dictionary_list"/>

有谁可以请我帮我缩小问题,我必须检查哪个区域?如果您需要更多信息,请告诉我。感谢。

=====================

添加了相关代码。

/////////////// strings.xml ///////////////
<string-array name="dictionary_list">
    <item>TWL</item>
    <item>SOWPOD</item>
</string-array>

////////////// fragment.java //////////////
//I cut only the code that relates to the spinner.

public class DictionaryFragment extends Fragment {
private Spinner spDictionary;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    Utils.writeStateLog("DictionaryFragment::onCreateView");

    // Inflate the layout for this fragment
    View v = inflater.inflate(R.layout.fragment_dictionary, container, false);
    spDictionary = (Spinner) v.findViewById(R.id.spDictionary);
    return v;
}

// Actually no adapter works with spinner directly (sorry about my first post). 
// I mean I don't pass the spinner's text value to any adapter. 
// I just get the spinner's text value as below and not use spinner anymore.

String type = spDictionary.getSelectedItem().toString();

或者它可能不是关于微调器的?但我在堆栈跟踪中看到它..

1 个答案:

答案 0 :(得分:0)

请添加您的Java代码。 创建类似

的数组
<string-array name="array_name">
    <item>Array Item One</item>
    <item>Array Item Two</item>
    <item>Array Item Three</item>
</string-array>

在你的java代码中:

Spinner spinner = new Spinner(this);
//selected item will look like a spinner set from XML
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, spinnerArray);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter);