尝试将阵列适配器转换为 Int 数组时出现问题



使适配器数组成为IntArray,因为我无法将适配器数组发送到另一个活动。

我正在Android Studio Java中创建一个赛车计时器,并将有关比赛的数据(例如:所有转弯的时间)保存在阵列适配器中。但是当我尝试将其发送到另一个活动时,该函数不接受 ArrayAdapter,因此我创建了一个函数将 ArrayAdapter 转换为 IntArray,问题是每当我运行该函数时,程序都会崩溃。我正在寻找这个问题的答案,如果有必要,我可以通过纠正我的代码或做一个完全不同的代码来寻找这个问题的答案。

public int[] AdapterToInt(ArrayAdapter adapter) {

    int[] a = new int[adapter.getCount()];
    for (int i = 0; i < adapter.getCount(); i++)
    {
        a[i] = Integer.valueOf(adapter.getItem(i));
    }
    return a;
}

public void onButtonClickSaveTimes(View view) {

    int[] array;
    array = AdapterToInt(adapter1);
    TextView textoexemplo = (TextView) findViewById(R.id.textViewhorario);    
   Intent myIntent = new Intent(getBaseContext(),   Main5Activity.class);
    myIntent.putExtra("car1", AdapterToInt(adapter1));
    myIntent.putExtra("car2", AdapterToInt(adapter2));
    myIntent.putExtra("car3", AdapterToInt(adapter3));
    myIntent.putExtra("car4", AdapterToInt(adapter4));
    myIntent.putExtra("car5", AdapterToInt(adapter5));
     startActivity(myIntent);

}

我希望它将 ArrayAdapter 发送到另一个活动,或者至少让我的函数工作并将 ArrayAdapter 转换为 ArrayInt,以便我可以通过 myIntent.putExtra 发送它,但实际输出是应用程序崩溃。

问题可能在这里:

a[i] = Integer.valueOf(adapter.getItem(i));

由于adapater.getItem(i)返回一个您可能无法转换为整数的对象,因此您可能会在这里遇到问题。

您可以改用adapter.getItemId(i),它将返回 long 而不是对象。

但是,这个想法似乎也不是很好,所以我会尝试看看这里是否有任何东西适合您。

如果这些都不起作用,那么仅将重建 ArrayAdapter 所需的所有数据发送到其他活动可能更有意义。

此链接也可能有所帮助:如何使用序列化在意图之间传递自定义 ArrayAdapter 对象

最新更新