android上的微调器数组

时间:2015-07-06 12:39:00

标签: android android-spinner

我是android的新手。&我正在尝试创建一个4 Spinners的数组(每个数组在列表中都有相同的动态选项 - 这是消息1到消息6),用于排序时间表。当只有1 Spinner时,代码工作正常,但是当我创建Spinner& ArrayAdapter数组,然后尝试运行它,应用程序崩溃。我收到错误"不幸的是,应用程序停止了。" &安培;我的运行设备挂起,我必须重新启动它。 (我还没有实现微调器选择结果的处理) 如果有人可以帮助我,那就太棒了。 这是我的代码:

public class Activity3 extends Activity {

private Button done;
private Spinner spinner[]= new Spinner[4];
private ArrayAdapter dataAdapter[]= new ArrayAdapter[4];

String message1,message2,message3,message4,message5,message6;


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

    Intent intent = getIntent();
     message1 = intent.getStringExtra(Activity2.EXTRA_MESSAGE1);
     message2 = intent.getStringExtra(Activity2.EXTRA_MESSAGE2);
     message3 = intent.getStringExtra(Activity2.EXTRA_MESSAGE3);
     message4 = intent.getStringExtra(Activity2.EXTRA_MESSAGE4);
     message5 = intent.getStringExtra(Activity2.EXTRA_MESSAGE5);
     message6 = intent.getStringExtra(Activity2.EXTRA_MESSAGE6);

    for(int i=1;i<=4;i++) {

        addItemsOnSpinner(i);

    }
}

public void addItemsOnSpinner(int i) {

    String spinner_id="spinner"+i;
    int resID = getResources().getIdentifier(spinner_id, "id", "com.sample.pat1");
    spinner[i] = ((Spinner) findViewById(resID));
    List<String> subject_list = new ArrayList<String>();
    subject_list.add(message1);
    subject_list.add(message2);
    subject_list.add(message3);
    subject_list.add(message4);
    subject_list.add(message5);
    subject_list.add(message6);

    dataAdapter[i] = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, subject_list);
    dataAdapter[i].setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner[i].setAdapter(dataAdapter[i]);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_activity3, menu);
    return true;
}
}

3 个答案:

答案 0 :(得分:0)

你的错误就在这里:

for(int i=1;i<=4;i++) {

    addItemsOnSpinner(i);

}

问题是你有4个微调器,但你忘了在一个循环中从0开始,所以它是“0,1,2,3”所以第四个微调器将有索引3,在这里你试图工作比如“1,2,3,4”所以你的第4个微调器有索引4,但你会尝试在旋转器选项卡中获得索引4处的元素,这意味着第5个,但是你的表只有4个长度,所以你有一个“outOfBoundException”

尝试将循环更改为

for(int i=0;i<4;i++) {

    addItemsOnSpinner(i);

}

希望我帮助你

答案 1 :(得分:0)

使用for (int i = 0; i < 4; i++) 然后使用"spinner" + (i+1)

我相信你的ArrayIndexOutOfBounds是因为你想要调用spinner [4],因为你的max是spinner [3]

答案 2 :(得分:0)

问题是因为您尝试在阵列中的位置4处添加对象。由于数组有4个位置,如function setMemory($limit = '512M') { ini_set('memory_limit', $limit); } ,因此必须使用0位置添加对象,直到3位置。