2017-05-23 6 views
-1

私はフラグメントでナビゲーション・ドロワー・アクティビティを使用しています。しかし、そのフラグメントが実行されると、アプリケーションがクラッシュします。私は非常に多くのスレッドとチュートリアルを通過しましたが、どこに問題があるのか​​わかりません。MP Android Chartライブラリを使用しているフラグメントが実行されたときにアプリケーションがクラッシュしました

それぞれのクラスとファイルに次の行を記述しました。

フラグメントクラス:

package com.example.maleesha5.elektra11; 

import android.graphics.Color; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import com.github.mikephil.charting.charts.BarChart; 
import com.github.mikephil.charting.data.BarData; 
import com.github.mikephil.charting.data.BarDataSet; 
import com.github.mikephil.charting.data.BarEntry; 
import com.github.mikephil.charting.utils.ColorTemplate; 

import java.util.ArrayList; 

/** 
* Created by kokil on 21/05/2017. 
*/ 


public class Statistics extends android.support.v4.app.Fragment { 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.statistics, container, false); 

     BarChart chart = (BarChart) rootView.findViewById(R.id.chart); 

     BarData data = new BarData(getXAxisValues(), getDataSet()); 
     chart.setData(data); 
     chart.setDescription("My Chart"); 
     // chart.animateXY(2000, 2000); 
     chart.invalidate(); 

     return rootView; 
    } 

    private ArrayList<BarDataSet> getDataSet() { 
     ArrayList<BarDataSet> dataSets = null; 

     ArrayList<BarEntry> valueSet1 = new ArrayList<>(); 
     BarEntry v1e1 = new BarEntry(110.000f, 0); // Jan 
     valueSet1.add(v1e1); 
     BarEntry v1e2 = new BarEntry(40.000f, 1); // Feb 
     valueSet1.add(v1e2); 
     BarEntry v1e3 = new BarEntry(60.000f, 2); // Mar 
     valueSet1.add(v1e3); 
     BarEntry v1e4 = new BarEntry(30.000f, 3); // Apr 
     valueSet1.add(v1e4); 
     BarEntry v1e5 = new BarEntry(90.000f, 4); // May 
     valueSet1.add(v1e5); 
     BarEntry v1e6 = new BarEntry(100.000f, 5); // Jun 
     valueSet1.add(v1e6); 

     ArrayList<BarEntry> valueSet2 = new ArrayList<>(); 
     BarEntry v2e1 = new BarEntry(150.000f, 0); // Jan 
     valueSet2.add(v2e1); 
     BarEntry v2e2 = new BarEntry(90.000f, 1); // Feb 
     valueSet2.add(v2e2); 
     BarEntry v2e3 = new BarEntry(120.000f, 2); // Mar 
     valueSet2.add(v2e3); 
     BarEntry v2e4 = new BarEntry(60.000f, 3); // Apr 
     valueSet2.add(v2e4); 
     BarEntry v2e5 = new BarEntry(20.000f, 4); // May 
     valueSet2.add(v2e5); 
     BarEntry v2e6 = new BarEntry(80.000f, 5); // Jun 
     valueSet2.add(v2e6); 

     BarDataSet barDataSet1 = new BarDataSet(valueSet1, "Brand 1"); 
     barDataSet1.setColor(Color.rgb(0, 155, 0)); 
     BarDataSet barDataSet2 = new BarDataSet(valueSet2, "Brand 2"); 
     barDataSet2.setColors(ColorTemplate.COLORFUL_COLORS); 

     dataSets = new ArrayList<>(); 
     dataSets.add(barDataSet1); 
     dataSets.add(barDataSet2); 
     return dataSets; 
    } 

    private ArrayList<String> getXAxisValues() { 
     ArrayList<String> xAxis = new ArrayList<>(); 
     xAxis.add("JAN"); 
     xAxis.add("FEB"); 
     xAxis.add("MAR"); 
     xAxis.add("APR"); 
     xAxis.add("MAY"); 
     xAxis.add("JUN"); 
     return xAxis; 
    } 
} 

メインActivityクラス:

} else if (id == R.id.nav_stats) { 
      setTitle("Statistics"); 
      Statistics stats= new Statistics(); 
      FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
      fragmentTransaction.replace(R.id.content_main, stats, "Stats"); 
      fragmentTransaction.commit(); 

build.gradleファイル:

repositories { 
    maven { url "https://jitpack.io" } 
} 

dependencies { 
    compile 'com.github.PhilJay:MPAndroidChart:v2.0.9' 
} 

レイアウトXMLファイル:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin"> 

    <com.github.mikephil.charting.charts.LineChart 
     android:id="@+id/chart" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</RelativeLayout> 
+0

BarChartコントロールクラスを呼び出している間、あなたのlogcatがクラッシュで言うんどのクラスcom.github.mikephil.charting.charts.LineChartを使用していますか? –

+0

エラーログを投稿する – Akshay

+0

stacktraceを使わずに何も言うのは難しいですが、 'onCreateView'の代わりに' onViewCreated'にグラフを設定してください。 – Sumido

答えて

2

あなたのXMLで

LineChart chart = (LineChart) rootView.findViewById(R.id.chart); 

BarChart chart = (BarChart) rootView.findViewById(R.id.chart); 

を交換し、あなたのフラグメントにあなたが

+1

ありがとうございます。コメントを通してそれを理解する。あなたの答えを正しいものとして受け入れました。 – kokilayaa

関連する問題