DataPoint []不接受浮点变量

时间:2018-03-18 05:06:31

标签: android arraylist android-graphview

我试图根据两个数组值制作图表,即浓度和光密度。我创建了两个用于保存这些数组的活动,并使用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);
    }

1 个答案:

答案 0 :(得分:0)

我认为您尚未初始化dp数组。初始化数组

dp = new DataPoint[l1];
在if语句if((array1.contains(true))&&(array2.contains(true)))

之前

修改

可能你有NullPointerException。检查array1array2不为空

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);
}

如果array1array2为空,请确保通过Intent传递两个arraylist。