Android java.lang.ArrayIndexOutOfBoundsException:长度=10;索引=10错误

Android java.lang.ArrayIndexOutOfBoundsException:长度=10;索引=10错误,android,Android,我有四个活动使用一个适配器来显示微调器。调用适配器时,其中2个活动工作正常,但其中2个崩溃。给出数组索引边界外异常:长度=10;索引=10错误 这是密码 此活动不会崩溃,并完美地显示微调器及其项 public class ArcherTowerActivity extends AppCompatActivity { Spinner sp1; Spinner sp2; Spinner sp3; Spinner sp4; Spinner sp5; Spin

我有四个活动使用一个适配器来显示微调器。调用适配器时,其中2个活动工作正常,但其中2个崩溃。给出数组索引边界外异常:长度=10;索引=10错误

这是密码

此活动不会崩溃,并完美地显示微调器及其项

public class ArcherTowerActivity extends AppCompatActivity {

 Spinner sp1;
    Spinner sp2;
    Spinner sp3;
    Spinner sp4;
    Spinner sp5;
    Spinner sp6;
    Spinner sp7;
    Spinner sp8;
    TextView tx;
    Button sbmt;
    String levels[]={"Level 1",
            "Level 2",
            "Level 3",
            "Level 4",
            "Level 5",
            "Level 6",
            "Level 7",
            "Level 8",
            "Level 9",
            "Level 10",
            "Level 11",
            "Level 12",
            "Level 13",
            "Level 14",};
    int[] images={
            R.drawable.archer_tower1,
            R.drawable.archer_tower2,
            R.drawable.archer_tower3,
            R.drawable.archer_tower4,
            R.drawable.archer_tower5,
            R.drawable.archer_tower6,
            R.drawable.archer_tower7,
            R.drawable.archer_tower8,
            R.drawable.archer_tower9,
            R.drawable.archer_tower10,
            R.drawable.archer_tower11,
            R.drawable.archer_tower12,
            R.drawable.archer_tower13,
            R.drawable.archer_tower14,
    };



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

        sbmt=(Button)findViewById(R.id.submit);
        tx=(TextView)findViewById(R.id.upgradeResult);
        sp1=(Spinner)findViewById(R.id.spinner);
        sp2=(Spinner)findViewById(R.id.spinner1);
        sp3=(Spinner)findViewById(R.id.spinner2);
        sp4=(Spinner)findViewById(R.id.spinner3);
        sp5=(Spinner)findViewById(R.id.spinner4);
        sp6=(Spinner)findViewById(R.id.spinner5);
        sp7=(Spinner)findViewById(R.id.spinner6);
        sp8=(Spinner)findViewById(R.id.spinner7);
        SpinnerAdapter adapter=new SpinnerAdapter(this,levels,images);
        sp1.setAdapter(adapter);
        sp2.setAdapter(adapter);
        sp3.setAdapter(adapter);
        sp4.setAdapter(adapter);
        sp5.setAdapter(adapter);
        sp6.setAdapter(adapter);
        sp7.setAdapter(adapter);
        sp8.setAdapter(adapter);
此活动未能做到这一点

public class MortarActivity extends AppCompatActivity {

    Spinner sp1;
    Spinner sp2;
    Spinner sp3;
    Spinner sp4;

    TextView tx;
    Button sbmt;
    String levels[]={"Level 1",
            "Level 2",
            "Level 3",
            "Level 4",
            "Level 5",
            "Level 6",
            "Level 7",
            "Level 8",
            "Level 9",
            "Level 10",
           };
    int[] images={
            R.drawable.mortar1,
            R.drawable.mortar2,
            R.drawable.mortar3,
            R.drawable.mortar4,
            R.drawable.mortar5,
            R.drawable.mortar6,
            R.drawable.mortar7,
            R.drawable.mortar8,
            R.drawable.mortar9,
            R.drawable.mortar10,

    };



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

        sbmt=(Button)findViewById(R.id.submit);
        tx=(TextView)findViewById(R.id.upgradeResult); 
        sp1=(Spinner)findViewById(R.id.spinner);
        sp2=(Spinner)findViewById(R.id.spinner1);
        sp3=(Spinner)findViewById(R.id.spinner2);
        sp4=(Spinner)findViewById(R.id.spinner3);

        SpinnerAdapter adapter=new SpinnerAdapter(this,levels,images);
        sp1.setAdapter(adapter);
        sp2.setAdapter(adapter);
        sp3.setAdapter(adapter);
        sp4.setAdapter(adapter);
下面是适配器代码

public class SpinnerAdapter extends ArrayAdapter <String>{


Context c;

    String[] levels;
    int[] images;

    public SpinnerAdapter(Context ctx,String[] levels, int[] images){

        super(ctx,R.layout.spinner_building_to_upgrade,levels);
        this.c=ctx;
        this.images=images;
        this.levels=levels;


    }


    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {


        if(convertView==null){

            LayoutInflater inflater=(LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView=inflater.inflate(R.layout.spinner_building_to_upgrade,null);
        }

        TextView tx=(TextView) convertView.findViewById(R.id.levelNumber);
        ImageView image=(ImageView)convertView.findViewById(R.id.imageid);

        //SET DATA
        tx.setText(levels[position]);
        image.setImageResource(images[position]);




        return convertView;
    }

    @NonNull
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView==null){

            LayoutInflater inflater=(LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView=inflater.inflate(R.layout.spinner_building_to_upgrade,null);
        }

        TextView tx=(TextView) convertView.findViewById(R.id.levelNumber);
        ImageView image=(ImageView)convertView.findViewById(R.id.imageid);

        //SET DATA
        tx.setText(levels[position]);
        image.setImageResource(images[position]);



        return convertView;
    }
}
公共类SpinnerAdapter扩展了ArrayAdapter{
上下文c;
字符串[]级别;
int[]图像;
公共SpinnerAdapter(上下文ctx、字符串[]级别、int[]图像){
超级(ctx、右布局、旋转器、建筑升级、标高);
这个.c=ctx;
这个。图像=图像;
这个。级别=级别;
}
@凌驾
公共视图getDropDownView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
LayoutInflater充气器=(LayoutInflater)c.getSystemService(Context.LAYOUT\u充气器\u服务);
convertView=充气机。充气(右布局。旋转器从建筑升级到建筑,空);
}
TextView tx=(TextView)convertView.findViewById(R.id.levelNumber);
ImageView image=(ImageView)convertView.findViewById(R.id.imageid);
//设置数据
tx.setText(级别[位置]);
image.setImageResource(图像[位置]);
返回视图;
}
@非空
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
LayoutInflater充气器=(LayoutInflater)c.getSystemService(Context.LAYOUT\u充气器\u服务);
convertView=充气机。充气(右布局。旋转器从建筑升级到建筑,空);
}
TextView tx=(TextView)convertView.findViewById(R.id.levelNumber);
ImageView image=(ImageView)convertView.findViewById(R.id.imageid);
//设置数据
tx.setText(级别[位置]);
image.setImageResource(图像[位置]);
返回视图;
}
}
第一个活动有14个项目,第二个活动有10个项目,第二个活动崩溃,给出java.lang.ArrayIndexOutOfBoundsException:length=10;索引=10错误

编辑:

我发现了一个问题,如果我在阵列适配器中输入少于10个项,它将崩溃并给出错误消息。为什么会这样?因为我没有设置任何最大最小长度。我想在微调器适配器中发送8个项目。请帮忙

错误日志

01-11 17:44:51.066 19769-19769/com.curtztech.android.clashmate E/dalvikvm: Could not find class 'android.widget.ThemedSpinnerAdapter', referenced from method android.support.v7.widget.AppCompatSpinner$DropDownAdapter.<init>
01-11 17:44:51.206 19769-19769/com.curtztech.android.clashmate E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.curtztech.android.clashmate, PID: 19769
java.lang.ArrayIndexOutOfBoundsException: length=10; index=10
at com.curtztech.android.clashmate.SpinnerAdapter.getView(SpinnerAdapter.java:74)
at android.widget.Spinner.makeView(Spinner.java:592)
at android.widget.Spinner.layout(Spinner.java:540)
at android.widget.Spinner.onLayout(Spinner.java:502)
at android.view.View.layout(View.java:14834)
at android.view.ViewGroup.layout(ViewGroup.java:4635)
at android.widget.GridLayout.onLayout(GridLayout.java:1183)
at android.view.View.layout(View.java:14834)
at android.view.ViewGroup.layout(ViewGroup.java:4635)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
at android.view.View.layout(View.java:14834)
at android.view.ViewGroup.layout(ViewGroup.java:4635)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
at android.view.View.layout(View.java:14834)
at android.view.ViewGroup.layout(ViewGroup.java:4635)
at android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:435)
at android.view.View.layout(View.java:14834)
at android.view.ViewGroup.layout(ViewGroup.java:4635)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
at android.view.View.layout(View.java:14834)
at android.view.ViewGroup.layout(ViewGroup.java:4635)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
at android.view.View.layout(View.java:14834)
at android.view.ViewGroup.layout(ViewGroup.java:4635)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
at android.view.View.layout(View.java:14834)
at android.view.ViewGroup.layout(ViewGroup.java:4635)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1983)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1740)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:996)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5600)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
at android.view.Choreographer.doCallbacks(Choreographer.java:574)
at android.view.Choreographer.doFrame(Choreographer.java:544)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5095)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
at dalvik.system.NativeStart.main(Native Method)
01-11 17:45:00.036 20127-20127/? E/Zygote: Zygote:  error closing descriptor
libcore.io.ErrnoException: close failed: EBADF (Bad file number)
at libcore.io.Posix.close(Native Method)
at libcore.io.BlockGuardOs.close(BlockGuardOs.java:75)
at com.android.internal.os.ZygoteInit.closeServerSocket(ZygoteInit.java:198)
at com.android.internal.os.ZygoteConnection.handleChildProc(ZygoteConnection.java:879)
at com.android.internal.os.ZygoteConnection.runOnce(ZygoteConnection.java:242)
at com.android.internal.os.ZygoteInit.runSelectLoop(ZygoteInit.java:662)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:598)
at dalvik.system.NativeStart.main(Native Method)
01-11 17:45:01.006 1230-2336/? E/ActivityThread: Failed to find provider info for com.android.settings.applications.SpProvider
01-11 17:45:01.006 20160-20160/? E/Zygote: Zygote:  error closing descriptor
libcore.io.ErrnoException: close failed: EBADF (Bad file number)
at libcore.io.Posix.close(Native Method)
at libcore.io.BlockGuardOs.close(BlockGuardOs.java:75)
at com.android.internal.os.ZygoteInit.closeServerSocket(ZygoteInit.java:198)
at com.android.internal.os.ZygoteConnection.handleChildProc(ZygoteConnection.java:879)
at com.android.internal.os.ZygoteConnection.runOnce(ZygoteConnection.java:242)
at com.android.internal.os.ZygoteInit.runSelectLoop(ZygoteInit.java:662)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:598)
at dalvik.system.NativeStart.main(Native Method)
01-11 17:45:57.236 1230-2340/? E/ActivityThread: Failed to find provider info for com.android.settings.applications.SpProvider
01-11 17:45:57.286 1230-1240/? E/ActivityThread: Failed to find provider info for com.android.settings.applications.SpProvider
01-11 17:46:37.266 1230-1742/? E/LocSvc_ApiV02: E/virtual loc_api_adapter_err LocApiV02::setXtraData(char*, int):1117]: failed status = eLOC_CLIENT_SUCCESS, inject_pos_ind.status = eQMI_LOC_GENERAL_FAILURE_V02, part num = 25, ind.partNum = 0
01-11 17:44:51.066 19769-19769/com.curtztech.android.clashmate E/dalvikvm:找不到从方法android.support.v7.widget.AppCompatSpinner$DropDownAdapter引用的类“android.widget.ThemedSpinnerAdapter”。
01-11 17:44:51.206 19769-19769/com.curtztech.android.clashmate E/AndroidRuntime:致命异常:main
进程:com.curtztech.android.clashmate,PID:19769
java.lang.ArrayIndexOutOfBoundsException:长度=10;指数=10
在com.curtztech.android.clashmate.SpinnerAdapter.getView(SpinnerAdapter.java:74)
位于android.widget.Spinner.makeView(Spinner.java:592)
位于android.widget.Spinner.layout(Spinner.java:540)
位于android.widget.Spinner.onLayout(Spinner.java:502)
位于android.view.view.layout(view.java:14834)
位于android.view.ViewGroup.layout(ViewGroup.java:4635)
位于android.widget.GridLayout.onLayout(GridLayout.java:1183)
位于android.view.view.layout(view.java:14834)
位于android.view.ViewGroup.layout(ViewGroup.java:4635)
位于android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
位于android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
位于android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
位于android.view.view.layout(view.java:14834)
位于android.view.ViewGroup.layout(ViewGroup.java:4635)
在android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)中
位于android.widget.FrameLayout.onLayout(FrameLayout.java:388)
位于android.view.view.layout(view.java:14834)
位于android.view.ViewGroup.layout(ViewGroup.java:4635)
位于android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:435)
位于android.view.view.layout(view.java:14834)
位于android.view.ViewGroup.layout(ViewGroup.java:4635)
在android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)中
位于android.widget.FrameLayout.onLayout(FrameLayout.java:388)
位于android.view.view.layout(view.java:14834)
位于android.view.ViewGroup.layout(ViewGroup.java:4635)
位于android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
位于android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
位于android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
位于android.view.view.layout(view.java:14834)
位于android.view.ViewGroup.layout(ViewGroup.java:4635)
在android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)中
位于android.widget.FrameLayout.onLayout(FrameLayout.java:388)
位于android.view.view.layout(view.java:14834)
位于android.view.ViewGroup.layout(ViewGroup.java:4635)
在android.view.ViewRootImpl.performLayout上(ViewRootImpl.java:1983)
在android.view.ViewRootImpl.performTraversals上(ViewRootImpl.java:1740)
位于android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:996)
在android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5600)
在android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
位于android.view.Choreographer.doCallbacks(Choreographer.java:574)
位于android.view.Choreographer.doFrame(Choreographer.java:544)
在android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)中
位于android.os.Handler.handleCallback(Handler.java:733)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:136)
位于android.app.ActivityThread.main(ActivityThread.java:5095)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
在dalvik.system.NativeStart.main(天然冰毒)
@Override
public int getCount() {
    return levels.length;
}