Передача массива Number[] через Intent
Я изо всех сил на передаче массива от одного действия до другого. В моей MainActivity я строю массив, похожий на этот:
Number[] s1 = {1, 8, 5, 2, 7, 4};
Причина, по которой я нуждаюсь в этом формате, состоит в том, чтобы построить график этих точек, используя androidplot в другой игре. В любом случае, я отправляю это так:
Intent intent = new Intent(this, DataTable.class);
intent.putExtra("plotpoints", s1);
startActivity(intent);
В своей другой деятельности я пытаюсь извлечь мою переменную
Bundle extras = getIntent().getExtras();
Number[] series1Numbers = extras.getStringArray("plotpoints");
Однако это дает мне ошибку несовместимых типов. Я знаю, что проблема в этой части моего кода:
extras.getStringArray("plotpoints");
но единственные функции, доступные для получения массивов:
getParcelableArray();
getIntegerArrayList();
getParcelableArrayList();
getStringArrayList();
getSparceParcelableArray();
getBooleanArray();
getByteArray();
getCharArray();
getFloatArray();
getShortArray();
getDoubleArray();
getIntArray();
getLongArray();
getStringArray();
getCharSequenceArray();
getCharSequenceArrayList();
Я не вижу ничего похожего на getNumberArray();
Как я могу обойти эту маленькую проблему? Ценить это.:)
2 ответа
Number
Класс реализует Сериализуемый. Таким образом, вы должны быть в состоянии сделать следующее:
Bundle extras = getIntent().getExtras();
Number[] series1Numbers = (Number[]) extras.getSerializable("plotpoints");
Использование:
int[] s1 = {1, 8, 5, 2, 7, 4};
Для вашего массива и получить его с помощью:
int[] series1Numbers = extras.getIntArray("plotpoints");
У вас есть несовместимые типы, потому что вы ставите массив int как дополнительный, а не строковый массив.