2016-09-15 9 views
-1

誰かが私を助けることができますか?私はこのエラーを発見し、私の問題に解決策を見つけることができません。これはAndroidのエラーです:jjoe64 GraphViewライブラリのエラー

09-15 18:26:47.434 3096-3096/com.example.user.navigationdrawer E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.example.user.navigationdrawer, PID: 3096 
    java.lang.IllegalArgumentException: new x-value must be greater then the last value. x-values has to be ordered in ASC. 
    at com.jjoe64.graphview.series.BaseSeries.appendData(BaseSeries.java:388) 
    at com.example.user.navigationdrawer.SeventhFragment$1.onDataChange(SeventhFragment.java:75) 
    at com.firebase.client.Query$1.onDataChange(Query.java:158) 
    at com.firebase.client.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:45) 
    at com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45) 
    at com.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5417) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

そして、これは私のコードです:

package com.example.user.navigationdrawer; 

import android.app.Activity; 
import android.app.Fragment; 
import android.content.Intent; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.support.annotation.Nullable; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Toast; 

import com.firebase.client.DataSnapshot; 
import com.firebase.client.Firebase; 
import com.firebase.client.FirebaseError; 
import com.firebase.client.ValueEventListener; 
import com.google.firebase.auth.FirebaseAuth; 
import com.google.firebase.auth.FirebaseUser; 
import com.jjoe64.graphview.GraphView; 
import com.jjoe64.graphview.series.BarGraphSeries; 
import com.jjoe64.graphview.series.DataPoint; 
import com.jjoe64.graphview.series.LineGraphSeries; 
import com.jjoe64.graphview.series.Series; 

public class SeventhFragment extends Fragment{ 

GraphView graphView; 
FirebaseAuth auth; 
FirebaseUser user; 
Firebase mRef; 
LineGraphSeries<DataPoint> series; 

View myView; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    myView = inflater.inflate(R.layout.seventh_layout, container, false); 
    graphView = (GraphView) myView.findViewById(R.id.graph); 

    auth = FirebaseAuth.getInstance(); 
    user = auth.getCurrentUser(); 

    if (user == null){ 
     Activity activity = getActivity(); 
     Toast.makeText(activity, "Per accedere a questa funzione devi aver effettuato il login.", Toast.LENGTH_SHORT).show(); 
     startActivity(new Intent(activity, LoginActivity.class)); 
    } 

    graphView.getViewport().setXAxisBoundsManual(true); 
    graphView.getViewport().setMinX(0.0); 
    graphView.getViewport().setMaxX(24); 
    // set manual Y bounds 
    graphView.getViewport().setYAxisBoundsManual(true); 
    graphView.getViewport().setMinY(0.0); 
    graphView.getViewport().setMaxY(2000); 

    graphView.getViewport().setScrollable(true); 

    series = new LineGraphSeries<DataPoint>(); 

    mRef = new Firebase("my url"); 
    mRef.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      final double Valore = dataSnapshot.getValue(double.class); 
      series.appendData(new DataPoint(1, Valore), false, 24); //what number must i write here? 
     }@Override 
     public void onCancelled(FirebaseError firebaseError) { 
     }}); 

    mRef = new Firebase("my url"); 
    mRef.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      final double Valore = dataSnapshot.getValue(double.class); 
      series.appendData(new DataPoint(2, Valore), false, 25); //what number must i write here? 
     }@Override 
     public void onCancelled(FirebaseError firebaseError) { 

     }}); 

    graphView.addSeries(series); 
    return myView; 
}} 

私はグラフに私はFireBaseからrecivedデータを設定したいが、それは私にエラーを与えます。私はライブラリを使用しています:com.jjoe64:graphview:4.1.0 ' HELP!

+0

GraphViewでは、追加するデータの昇順でなければなりません。これは、x値が以前に追加された値よりも大きくなる必要があることを意味します。私はあなたが常にあなたのx値を '1'と' 2'に設定しているのを見る。これが間違っているところです。追加するデータごとにx値を増やす必要があります。より正確な答えが必要な場合は、プロットしているxとyの名前を知る必要があります。 – Panther

答えて

0

リスナーのコールバックは非同期です。つまり、graphView.addSeries(series)への呼び出しは、DataPointsseriesに追加するコールバックが発生する前に実行されます。

詳細な説明はsee this answerです。

0

ライブラリとしてのjarファイルを追加しました。プロジェクトにGraphViewライブラリを追加しなかったことを示しています。

関連する問題