마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

온클릭리스너 안에서 조건문 넣으면 강제종료되는 문제

0 추천

fragment내에서 버튼을 눌렀을 시 arrayList로 값을 받아와서

차트를 그리도록 하려는데요. 첫번째 코드처럼 통째로 돌리면 정상작동하지만

마지막 코드처럼 arrayList길이에 따라서 다르게 차트를 그리려고 하면

앱이 강제종료됩니다. 도움 부탁드립니다...

 

 

 

entries.add(new BarEntry (1, Float.parseFloat(m1.arr.get(1))));
                    entries.add(new BarEntry (2, Float.parseFloat(m1.arr.get(2))));
                    entries.add(new BarEntry (3, Float.parseFloat(m1.arr.get(3))));
                    barChart = (BarChart) view.findViewById(R.id.feedChart);

                    BarData barData = new BarData(); // 차트에 담길 데이터
                    BarDataSet barDataSet = new BarDataSet(entries, "bardataset"); // 데이터가 담긴 Arraylist 를 BarDataSet 으로 변환한다.

                    barDataSet.setColor(Color.BLUE); // 해당 BarDataSet 색 설정 :: 각 막대 과 관련된 세팅은 여기서 설정한다.

                    barData.addDataSet(barDataSet); // 해당 BarDataSet 을 적용될 차트에 들어갈 DataSet 에 넣는다.

                    barChart.setData(barData); // 차트에 위의 DataSet 을 넣는다.

                    barChart.invalidate(); // 차트 업데이트
                    barChart.setTouchEnabled(false);
if(cnt == 1){
                    entries.add(new BarEntry (1, Float.parseFloat(m1.arr.get(1))));
                    barChart = (BarChart) view.findViewById(R.id.feedChart);

                    BarData barData = new BarData(); // 차트에 담길 데이터
                    BarDataSet barDataSet = new BarDataSet(entries, "bardataset"); // 데이터가 담긴 Arraylist 를 BarDataSet 으로 변환한다.

                    barDataSet.setColor(Color.BLUE); // 해당 BarDataSet 색 설정 :: 각 막대 과 관련된 세팅은 여기서 설정한다.

                    barData.addDataSet(barDataSet); // 해당 BarDataSet 을 적용될 차트에 들어갈 DataSet 에 넣는다.

                    barChart.setData(barData); // 차트에 위의 DataSet 을 넣는다.

                    barChart.invalidate(); // 차트 업데이트
                    barChart.setTouchEnabled(false);
                }
                else if(cnt == 2){
                    entries.add(new BarEntry (1, Float.parseFloat(m1.arr.get(1))));
                    entries.add(new BarEntry (2, Float.parseFloat(m1.arr.get(2))));
                    barChart = (BarChart) view.findViewById(R.id.feedChart);

                    BarData barData = new BarData(); // 차트에 담길 데이터
                    BarDataSet barDataSet = new BarDataSet(entries, "bardataset"); // 데이터가 담긴 Arraylist 를 BarDataSet 으로 변환한다.

                    barDataSet.setColor(Color.BLUE); // 해당 BarDataSet 색 설정 :: 각 막대 과 관련된 세팅은 여기서 설정한다.

                    barData.addDataSet(barDataSet); // 해당 BarDataSet 을 적용될 차트에 들어갈 DataSet 에 넣는다.

                    barChart.setData(barData); // 차트에 위의 DataSet 을 넣는다.

                    barChart.invalidate(); // 차트 업데이트
                    barChart.setTouchEnabled(false);
                }
매일자요 (130 포인트) 님이 2022년 9월 7일 질문

1개의 답변

+1 추천

콜렉션, array 등은 인덱스 시작이 0부터입니다.
arr.get(0)
arr.get(1)

그리고 loop문을 이용하시면 아이템 갯수에 따라 처리할 필요가 없어 보여요.
 

for (String value : m1.arr) {
    entries.add(new BarEntry (entries.size() + 1,
         Float.parseFloat(value)));
}



추가로 parseFloat를 사용할 때 exeption이 떨어질 수 있기 때문에 에러처리를 명확하게 해주시는 게 좋을 것 같습니다.

spark (224,800 포인트) 님이 2022년 9월 8일 답변
spark님이 2022년 9월 9일 수정
...