通过Intent传递Number []数组

时间:2015-06-18 00:46:51

标签: android arrays android-intent bundle androidplot

我正在努力将数组从一个活动传递到另一个活动。在我的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 个答案:

答案 0 :(得分:1)

Number类实现Serializable。所以你应该能够做到以下几点:

Bundle extras = getIntent().getExtras();
Number[] series1Numbers = (Number[]) extras.getSerializable("plotpoints");

答案 1 :(得分:0)

使用:

int[] s1 = {1, 8, 5, 2, 7, 4};  

对于您的数组并使用以下方法检索它:

int[] series1Numbers = extras.getIntArray("plotpoints");

你有不可媲美的类型,因为你把一个int数组作为额外的,而不是字符串数组。