Autore Topic: Grafico scompare con AChartEngine  (Letto 788 volte)

Offline davix10

  • Utente normale
  • ***
  • Post: 155
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg G4
  • Play Store ID:
    davix10
  • Sistema operativo:
    Windows 10
Grafico scompare con AChartEngine
« il: 22 Settembre 2014, 09:44:39 CEST »
0
Ciao a tutti, ho un problema con AChartEngine. Quando lancio l'app vedo il grafico perfettamente ma se premo il tasto back e quindi esco dall'app e la rilancio, non visualizzo più il grafico. Per visualizzarlo nuovamente devo eliminarla dal task manager e lanciarla di nuovo. Quale può essere il problema?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Grafico scompare con AChartEngine
« Risposta #1 il: 22 Settembre 2014, 09:47:51 CEST »
0
Quale può essere il problema?

Ci deve essere un problema nel codice che istanzia o crea il grafico.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline davix10

  • Utente normale
  • ***
  • Post: 155
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg G4
  • Play Store ID:
    davix10
  • Sistema operativo:
    Windows 10
Re:Grafico scompare con AChartEngine
« Risposta #2 il: 22 Settembre 2014, 09:49:34 CEST »
0
Posto il codice, magari riesci a darmi una mano a trovare il problema.

Codice (Java): [Seleziona]
Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub

            super.handleMessage(msg);
            switch(msg.what){
            case Bluetooth.SUCCESS_CONNECT:
                Bluetooth.connectedThread = new Bluetooth.ConnectedThread((BluetoothSocket)msg.obj);
                Toast.makeText(getApplicationContext(), "Connected!", 0).show();
                String s = "successfully connected";
                Bluetooth.connectedThread.start();
                Bluetooth.connectedThread.write(new byte[]{(byte) prova});
                break;
            case Bluetooth.MESSAGE_READ:

                byte[] readBuf = (byte[]) msg.obj;
                int valore_a_16 = ((readBuf[1] & 0xFF) << 8) | (readBuf[0] & 0xFF);
                int valore_a_16_2 = ((readBuf[3] & 0xFF) << 8) | (readBuf[2] & 0xFF);
                int valore_a_16_3 = ((readBuf[5] & 0xFF) << 8) | (readBuf[4] & 0xFF);
                int valore_a_16_4 = ((readBuf[7] & 0xFF) << 8) | (readBuf[6] & 0xFF);
                String strIncom = new String(readBuf);   // create string from bytes array
                String str = String.valueOf(valore_a_16);
                String str2 = String.valueOf(valore_a_16_2);
                String str3 = String.valueOf(valore_a_16_3);
                String str4 = String.valueOf(valore_a_16_4);
                Log.d("SHORT", str);
                Log.d("strIncom", strIncom);
                Log.d("SHORT CH 2", str2);
                Log.d("SHORT CH 3", str3);
                Log.d("SHORT CH 4", str4);
                char c = strIncom.charAt(0);
                long foo = Integer.parseInt(str);
                long foo2 = Integer.parseInt(str2);
                long foo3 = Integer.parseInt(str3);
                long foo4 = Integer.parseInt(str4);


                risultato = (long) (foo * 5000000)/(65535*150);
                risultato2 = (long) (foo2 * 5000000)/(65535*150);
                risultato3 = (long) (foo3 * 5000000)/(65535*150);
                risultato4 = (long) (foo4 * 5000000)/(65535*150);

                String prova = Float.toString(risultato);
                String prova2 = Float.toString(risultato2);
                String prova3 = Float.toString(risultato3);
                String prova4 = Float.toString(risultato4);
                Log.d("prova", prova);


                VALUES = new double[] { risultato, risultato2, risultato3, risultato4 };
                updateChart();





                break;
            }
        }


    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        init();
        ButtonInit();

        mRenderer.setApplyBackgroundColor(true);
        mRenderer.setBackgroundColor(Color.argb(100, 50, 50, 50));
        mRenderer.setChartTitleTextSize(20);
        mRenderer.setLabelsTextSize(35);
        mRenderer.setLegendHeight(55);
        mRenderer.setLegendTextSize(35);
        mRenderer.setMargins(new int[] { 20, 30, 15, 0 });
        mRenderer.setZoomButtonsVisible(true);
        mRenderer.setStartAngle(90);
        mRenderer.setChartTitle("ARV");
        mRenderer.setChartTitleTextSize(40);



        for (int i = 0; i < VALUES.length; i++) {
            mSeries.add(NAME_LIST[i] + " " + VALUES[i], VALUES[i]);
            renderer = new SimpleSeriesRenderer();
            renderer.setColor(COLORS[i]);
            mRenderer.addSeriesRenderer(renderer);
        }

        if (mChartView != null) {
            mChartView.repaint();
        }

    }

    @Override
    protected void onResume() {
        super.onResume();

       if (mChartView == null) {
            layout = (LinearLayout) findViewById(R.id.Graph);



            mChartView = (GraphicalView) ChartFactory.getPieChartView(this, mSeries, mRenderer);

            mRenderer.setClickEnabled(true);
            mRenderer.setSelectableBuffer(10);

            mChartView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                      SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();


                }
            });


            layout.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
            mChartView.repaint();
        }
        else {
        mChartView.repaint();
        }








    }
    void init(){
        Bluetooth.gethandler(mHandler);


    }

    void ButtonInit(){
        bConnect = (Button)findViewById(R.id.bConnect);
        bConnect.setOnClickListener(this);
        bDisconnect = (Button)findViewById(R.id.bDisconnect);
        bDisconnect.setOnClickListener(this);



    }
    private void updateChart() {
        Log.i("qiuzhping", "updateChart ok");
        mSeries.clear();

        // mRenderer.removeAllRenderers();

        for (int i = 0; i < VALUES.length; i++) {
            mSeries.add(NAME_LIST[i] + " " + VALUES[i]+" " + "µV", VALUES[i]); // numerical setting type names and corresponding, in front of (key, value) pairs
            renderer = new SimpleSeriesRenderer();
            renderer.setColor(COLORS[(mSeries.getItemCount() - 1) % COLORS.length]);

            renderer.setChartValuesFormat(NumberFormat.getPercentInstance());// Setting percentage

            mRenderer.addSeriesRenderer(renderer);// The tracer of the latest addition to DefaultRenderer
        }
        mChartView.repaint();
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch(v.getId()){
        case R.id.bConnect:
            startActivity(new Intent("android.intent.action.BT"));
            break;
        case R.id.bDisconnect:
            Bluetooth.disconnect();
            break;

        }


    }

}

Post unito: [time]22 Settembre 2014, 12:11:37 CEST[/time]
Sono riuscito a risolvere in questo modo, ho aggiunto questa parte di codice:

Codice (Java): [Seleziona]
public void onBackPressed() {
            if (back==1)
            {
               
                Intent intent = new Intent(Intent.ACTION_MAIN);
                intent.addCategory(Intent.CATEGORY_HOME);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
                         
            }

Secondo voi può avere senso?
« Ultima modifica: 22 Settembre 2014, 12:17:19 CEST da davix10 »