我试图根据两个数组值制作图表,即浓度和光密度。我创建了两个用于保存这些数组的活动,并使用bundle和intent将数组列表传递给第三个使用string的活动。 每当我尝试运行代码时,我的应用程序都会崩溃。
GraphView gpView;
String co;
String od;
Float x,y;
int l1,l2;
DataPoint [] dp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
Bundle bundle1 = getIntent().getExtras();
ArrayList<String> array1 = (ArrayList<String>) bundle1.getStringArrayList("Conc");
Bundle bundle2 = getIntent().getExtras();
ArrayList<String> array2 = (ArrayList<String>) bundle2.getStringArrayList("Od");
gpView= findViewById(R.id.graph);
LineGraphSeries <DataPoint> series = new LineGraphSeries<>();
l1 = array1.size();
l2 = array2.size();
if((array1.contains(true))&&(array2.contains(true)))
{
for (int c1 = 0; c1<l1; c1++)
{
for(int c2=0; c2<l2; c2++ ) {
co = array1.get(c1);
od = array2.get(c2);
x = Float.parseFloat(co);
y = Float.parseFloat(od);
dp[c1] = new DataPoint(x,y);
}
}
gpView.addSeries(series);
}
}
或者,我尝试运行一个简单的输入法,并使用此
private DataPoint[] getDataPoint ()
{
dp = new DataPoint[]
{
new DataPoint(10, 0.2),
new DataPoint(20, 0.38),
new DataPoint(30, 0.45),
new DataPoint(40, 0.69),
new DataPoint(50, 0.81),
};
return (dp);
}
答案 0 :(得分:0)
我认为您尚未初始化dp
数组。初始化数组
dp = new DataPoint[l1];
在if语句if((array1.contains(true))&&(array2.contains(true)))
之前
修改
可能你有NullPointerException
。检查array1
,array2
不为空
if(array1 == null){
Toast.makeText(this, "array1 is null", Toast.LENGTH_LONG).show();
}
if(array2 == null){
Toast.makeText(this, "array2 is null", Toast.LENGTH_LONG).show();
}
if(array1 != null){
l1 = array1.size();
}
if(array2 != null){
l2 = array2.size();
}
if(l1 > 0){
dp = new DataPoint[l1];
for (int c1 = 0; c1<l1; c1++)
{
for(int c2=0; c2<l2; c2++ ) {
co = array1.get(c1);
od = array2.get(c2);
x = Float.parseFloat(co);
y = Float.parseFloat(od);
dp[c1] = new DataPoint(x,y);
}
}
gpView.addSeries(series);
}
如果array1
和array2
为空,请确保通过Intent
传递两个arraylist。