使AdapterArray成为IntArray,因为我无法将适配器数组发送给另一个活动。
我正在Android Studio Java中创建一个赛车计时器,并且已将有关比赛的数据(例如:所有转弯时间)保存在阵列适配器中。但是,当我尝试将其发送到另一个Activity时,该函数不接受ArrayAdapter,因此我创建了一个将ArrayAdapter转换为IntArray的函数,问题是,每当我运行该函数时,程序就会崩溃。 我正在通过更正我的代码或如果需要的话做一个完全不同的代码来寻找解决此问题的方法。
public int [] AdapterToInt(ArrayAdapter适配器) {
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(视图){
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发送它,但实际输出是应用程序崩溃。
答案 0 :(得分:0)
问题可能在这里:
a[i] = Integer.valueOf(adapter.getItem(i));
由于adapater.getItem(i)
返回的对象可能无法转换为整数,因此这里可能会出现问题。
您可以改为使用adapter.getItemId(i)
,它返回一个long而不是一个对象。
但是,这个想法似乎也不太好,因此我将尝试看看here中的任何内容是否对您有用。
如果这些都不起作用,则仅将您需要重建ArrayAdapter的所有数据发送给其他活动可能更有意义。
此链接也可能有帮助: How do I pass custom ArrayAdapter Object between Intents with serialization