Передача массива 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 как дополнительный, а не строковый массив.

Другие вопросы по тегам