fouzia Posté(e) 9 août 2017 Share Posté(e) 9 août 2017 Bonjour, je voudrais faire un spinner , quand je sélectionne une option et je clique sur le boutton l 'application m'affiche un graphe. package com.example.lenovo.volley; import android.app.ProgressDialog; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.VolleyLog; import com.android.volley.toolbox.JsonArrayRequest; 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 org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; public class first extends AppCompatActivity implements AdapterView.OnItemSelectedListener { String[] reportings= new String[]{"nombre de vose par personne","nombre de cantacts chaque personne", "nombre d'audits par personne","nombre devistes de chaque personne","nombre de mission de chaque personne"}; Spinner reporting; //Button rechercher; BarData theData; BarChart barChart; private String urlJsonArry; //private Button btnMakeArrayRequest; String record=""; // Progress dialog private ProgressDialog pDialog; private String jsonResponse; ArrayList<String> employes=new ArrayList<>(); ArrayList<BarEntry> barEntries = new ArrayList<>(); private static String TAG1 = first.class.getSimpleName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); //rechercher=(Button)findViewById(R.id.button); barChart=(BarChart)findViewById(R.id.barChart); // YAxis rightAxis = barChart.getAxisRight(); // rightAxis.setDrawGridLines(false); // YAxis leftAxis = barChart.getAxisLeft(); // leftAxis.setDrawGridLines(false); pDialog = new ProgressDialog(this); pDialog = new ProgressDialog(this); pDialog.setMessage("Please wait..."); pDialog.setCancelable(false); reporting=(Spinner)findViewById(R.id.spinner); ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,reportings); reporting.setAdapter(adapter); reporting.setOnItemSelectedListener(this); } public void rechercher(View view){ showpDialog(); JsonArrayRequest req = new JsonArrayRequest(urlJsonArry, new Response.Listener<JSONArray>() { @Override public void onResponse(JSONArray response) { Log.d(TAG1, response.toString()); try { // Parsing json array response // loop through each json object for (int i = 0; i < response.length(); i++) { JSONObject person = (JSONObject) response.get(i); int Val=person.getInt("Val"); String user_name=person.getString("user_name"); employes.add(user_name); barEntries.add(new BarEntry(Val,i)); } BarDataSet barDataSet=new BarDataSet(barEntries,record); theData = new BarData(employes,barDataSet); barChart.setData(theData); barChart.notifyDataSetChanged(); barChart.invalidate(); } catch (JSONException e) { e.printStackTrace(); Toast.makeText(getApplicationContext(), "Error: " + e.getMessage(), Toast.LENGTH_LONG).show(); } hidepDialog(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d(TAG1, "Error: " + error.getMessage()); Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show(); hidepDialog(); } }); // Adding request to request queue AppController.getInstance().addToRequestQueue(req); } private void showpDialog() { if (!pDialog.isShowing()) pDialog.show(); } private void hidepDialog() { if (pDialog.isShowing()) pDialog.dismiss(); } @Override public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) { switch (position) { case 0: record = "nombre de vose par personne"; urlJsonArry="http://13.81.62.0/mobileapi/reporting?reportid=1"; break; case 1: record = "nombre de cantacts chaque personne"; urlJsonArry="http://13.81.62.0/mobileapi/reporting?reportid=2"; break; case 2: record = "nombre d'audits par personne"; urlJsonArry="http://13.81.62.0/mobileapi/reporting?reportid=3"; break; } } @Override public void onNothingSelected(AdapterView<?> adapterView) { } } <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.lenovo.volley.first"> <LinearLayout android:layout_width="368dp" android:layout_height="495dp" android:orientation="vertical" tools:layout_editor_absoluteY="8dp" tools:layout_editor_absoluteX="8dp"> <TextView android:id="@+id/textView3" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0.10" android:text="TextView" /> <Spinner android:id="@+id/spinner" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0.55" /> <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0.10" android:onClick="rechercher" android:text="Button" /> <com.github.mikephil.charting.charts.BarChart android:layout_width="match_parent" android:layout_height="363dp"></com.github.mikephil.charting.charts.BarChart> </LinearLayout> </android.support.constraint.ConstraintLayout> voila l erreur qui s'affiche v08-09 09:58:49.356 32742-32742/com.example.lenovo.volley E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.lenovo.volley, PID: 32742 java.lang.NullPointerException: Attempt to invoke virtual method 'void com.github.mikephil.charting.charts.BarChart.setData(com.github.mikephil.charting.data.ChartData)' on a null object reference at com.example.lenovo.volley.first$1.onResponse(first.java:99) at com.example.lenovo.volley.first$1.onResponse(first.java:77) at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:65) at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7231) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.