Autore Topic: Memorizzare lo stato di un app quando viene chiusa  (Letto 674 volte)

Offline Claudio84

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    smartphone
  • Sistema operativo:
    windows 7
Memorizzare lo stato di un app quando viene chiusa
« il: 11 Marzo 2015, 17:30:13 CET »
0
Buongiorno a tutti.
Ho una domanda da porre...Sto creando un applicazione dove all'interno c'è un quiz normalissimo diviso in più parti...Quindi completando ile prime 10 domande, si passa a quelle successive.Il mio problema sta nel memorizzare lo stato delle domande alle quali ho già risposto e a quale livello sono arrivato anche quando chiudo l app.Cosi quando la riapro mi rirovo al punto di prima senza ogni volta dover ripetere tutto dal'inizio..Grazie per l'aiuto a chiunque saprà darmi una mano...
« Ultima modifica: 11 Marzo 2015, 17:34:09 CET da Claudio84 »

Offline arlabs

  • Utente normale
  • ***
  • Post: 430
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Memorizzare lo stato di un app quando viene chiusa
« Risposta #1 il: 11 Marzo 2015, 18:03:53 CET »
0
La risposta alla tua domanda è SharedPreferences

http://developer.android.com/guide/topics/data/data-storage.html#pref

Ciao.

Offline Claudio84

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    smartphone
  • Sistema operativo:
    windows 7
Re:Memorizzare lo stato di un app quando viene chiusa
« Risposta #2 il: 11 Marzo 2015, 20:00:14 CET »
0
Grazie mille...Ho dato un occhiata ma non riesco a capire come salvare tutta l activity...all'iterno dell'actvivity del questionario ho una 10 domande e per ognuna di queste ci sono 3 checkBox.Io vorrei che quando venisse riaperta l app, si potesse caricare volendo con un button lo stato precedente dell activity.Non riesco a trovare nulla in merito

Offline AnonymousDoor

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Play Store ID:
    Gheoo
Re:Memorizzare lo stato di un app quando viene chiusa
« Risposta #3 il: 11 Marzo 2015, 20:15:42 CET »
0
Ciao secondo me non conviene con un button

Offline AnonymousDoor

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Play Store ID:
    Gheoo
Re:Memorizzare lo stato di un app quando viene chiusa
« Risposta #4 il: 11 Marzo 2015, 20:16:36 CET »
0
Secondo me ti conviene più prendere "nota" delle parti completate e quali no

Offline Claudio84

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    smartphone
  • Sistema operativo:
    windows 7
Re:Memorizzare lo stato di un app quando viene chiusa
« Risposta #5 il: 11 Marzo 2015, 20:17:34 CET »
0
Cioè?in che senso prendere nota?

Offline AnonymousDoor

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Play Store ID:
    Gheoo
Re:Memorizzare lo stato di un app quando viene chiusa
« Risposta #6 il: 11 Marzo 2015, 20:46:43 CET »
0
Per esempio una volta che l utente completa la prima parte tu con le sharedpreferences ti salvi ad esempio un valore boolean che se ha completato la prima parte sarà true altrimenti se non l ha completata metterai false ... e via dicendo per le altre parti

Offline Claudio84

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    smartphone
  • Sistema operativo:
    windows 7
Re:Memorizzare lo stato di un app quando viene chiusa
« Risposta #7 il: 11 Marzo 2015, 20:52:11 CET »
0
Quindi per ogni checkBox devo fare questo procedimento giusto?

Offline AnonymousDoor

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Play Store ID:
    Gheoo
Re:Memorizzare lo stato di un app quando viene chiusa
« Risposta #8 il: 11 Marzo 2015, 21:05:10 CET »
0
Spiegami meglio come hai strutturato il quiz

Offline Claudio84

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    smartphone
  • Sistema operativo:
    windows 7
Re:Memorizzare lo stato di un app quando viene chiusa
« Risposta #9 il: 11 Marzo 2015, 21:31:16 CET »
0
ok...ti posto il codice
Codice (Java): [Seleziona]
public class QuizActivity extends ActionBarActivity {
        protected CheckBox prima;
        protected CheckBox seconda;
        protected CheckBox terza;
        protected Button conferma;
        protected String rispostaEsatta ="Rispost esatta...+3pt";
        protected String rispostaErrata = "Risposta sbagliata 0pt";
        protected int punteggio=0;
        protected TextView valuta;
        protected TextView rivedi;
        protected Button risultato;
        protected TextView punteggio1;
        protected Button next;
        int num1 =0;
        int num2 = 0;
        int num3=0;
        int num4=0;
        int num5=0;
        int tot = 0;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_quiz);
                ActionBar actionBar = getSupportActionBar();
            actionBar.setHomeButtonEnabled(true);
            actionBar.setDisplayHomeAsUpEnabled(true);
            conferma=(Button)findViewById(R.id.conferma1);
                prima=(CheckBox)findViewById(R.id.risp1_1);
                seconda = (CheckBox)findViewById(R.id.risp2_1);
        terza = (CheckBox)findViewById(R.id.risp3_1);
                valuta = (TextView)findViewById(R.id.valutazione1);
           rivedi= (TextView)findViewById(R.id.compressori);
           next=(Button)findViewById(R.id.next);
                conferma.setOnClickListener(new OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                calculate();
                        }
                        private void calculate() {
                                // TODO Auto-generated method stub
                        SharedPreferences pref = getSharedPreferences("datos",Context.MODE_PRIVATE);   
                        // TODO Auto-generated method stub
                                if(prima.isChecked()){
                                        prima.getTag();
                                        Toast.makeText(getApplicationContext(),rispostaEsatta, Toast.LENGTH_LONG).show();
                                        //int punto =0;
                                //punteggio =punto+3;
                        num1=3;
                                valuta.setText(Integer.toString(num1)+ " punti");
                                valuta.setTextSize(20);
                               
                                prima.setBackgroundColor(Color.GREEN);
                               
                                conferma.setOnClickListener(null);
                               
                               
                                }
                                        if (seconda.isChecked()){
                                                Toast.makeText(getBaseContext(),rispostaErrata, Toast.LENGTH_LONG).show();
                                                num1=0;
                                                valuta.setText(Integer.toString(num1)+ " punti");
                                        valuta.setTextSize(20);
                                        seconda.setBackgroundColor(Color.RED);
                                        prima.setBackgroundColor(Color.GREEN);
                                        punteggio =0;
                                        conferma.setOnClickListener(null);
                                        rivedi.setText("Rivedi capitolo TERMODINAMICA");
                                        rivedi.setTextColor(Color.RED);
                                       
                                                rivedi.setOnClickListener(new OnClickListener() {
                                                       
                                                        @Override
                                                        public void onClick(View v) {
                                                                // TODO Auto-generated method stub
                                                                Intent ora = new Intent(QuizActivity.this,TermodinamicaActivity.class);
                                                                startActivity(ora);
                                                        }
                                                });
                                               
                                        }
                                          if (terza.isChecked()){
                                                  Toast.makeText(getBaseContext(), rispostaErrata, Toast.LENGTH_LONG).show();
                                                 
                                                  num1=0;
                                                        valuta.setText(Integer.toString(num1)+ " punti");
                                                  valuta.setTextSize(20);
                                                  terza.setBackgroundColor(Color.RED);
                                                  prima.setBackgroundColor(Color.GREEN);
                                                  punteggio = 0;
                                                  conferma.setOnClickListener(null);
                                                  rivedi.setText("Rivedi capitolo TERMODINAMICA");
                                                        rivedi.setTextColor(Color.RED);
                                                       
                                                                rivedi.setOnClickListener(new OnClickListener() {
                                                                       
                                                                        @Override
                                                                        public void onClick(View v) {
                                                                                // TODO Auto-generated method stub
                                                                                Intent ora = new Intent(QuizActivity.this,TermodinamicaActivity.class);
                                                                                startActivity(ora);
                                                                        }
                                                                });
                                          }}});


               
               

                prima.setOnClickListener(new OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                                if(prima.isChecked())
                                        seconda.setChecked(false);
                                        terza.setChecked(false);
                        }
                });
               
                seconda.setOnClickListener(new OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                                if(seconda.isChecked())
                                        prima.setChecked(false);
                                    terza.setChecked(false);
                        }
                });
               
                terza.setOnClickListener(new OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                                if(terza.isChecked())
                                        prima.setChecked(false);
                                    seconda.setChecked(false);
                        }
                });
               
               
               
                   final Button conferma1=(Button)findViewById(R.id.conferma2);
                        final CheckBox prima1=(CheckBox)findViewById(R.id.risp1_2);
                        final CheckBox seconda1= (CheckBox)findViewById(R.id.risp2_2);
                final CheckBox terza1= (CheckBox)findViewById(R.id.risp3_2);
                        final TextView valuta1 = (TextView)findViewById(R.id.valutazione2);
                        conferma1.setOnClickListener(new OnClickListener() {
                               
                                @Override
                                public void onClick(View v) {
                                       
                               
                                        // TODO Auto-generated method stub
                                        if(prima1.isChecked()){
                                               
                                                Toast.makeText(getBaseContext(),rispostaErrata, Toast.LENGTH_LONG).show();
                                                //int punto =0;
                                        //punteggio =punto-3;
                                                tot=0+num1;
                                        num2=0;
                                        valuta.setText(Integer.toString(num2)+ " punti");
                                        valuta1.setTextSize(20);
                                       
                                        prima1.setBackgroundColor(Color.RED);
                                        terza1.setBackgroundColor(Color.GREEN);
                                       
                                        conferma1.setOnClickListener(null);
                                       
                                       
                                        }
                                                if (seconda1.isChecked()){
                                                        Toast.makeText(getBaseContext(),rispostaErrata, Toast.LENGTH_LONG).show();
                                                        tot=0+num1;
                                                        num2=0;
                                                        valuta.setText(Integer.toString(num2)+ " punti");
                                                valuta1.setTextSize(20);
                                                seconda1.setBackgroundColor(Color.RED);
                                                terza1.setBackgroundColor(Color.GREEN);
                                                punteggio =0;
                                                conferma1.setOnClickListener(null);}
                                                  if (terza1.isChecked()){
                                                          Toast.makeText(getBaseContext(), rispostaEsatta, Toast.LENGTH_LONG).show();
                                                          tot=3+num1;
                                                          num2=3;
                                                                valuta1.setText(Integer.toString(num2)+ " punti");
                                                          valuta1.setTextSize(20);
                                                          terza1.setBackgroundColor(Color.GREEN);
                                                         
                                                          //punteggio =+3;
                                                          conferma1.setOnClickListener(null);
                                                         
                                }}
                        });
                       
                        prima1.setOnClickListener(new OnClickListener() {
                               
                                @Override
                                public void onClick(View v) {
                                        // TODO Auto-generated method stub
                                        if(prima1.isChecked())
                                                seconda1.setChecked(false);
                                                terza1.setChecked(false);
                                }
                        });
                       
                        seconda1.setOnClickListener(new OnClickListener() {
                               
                                @Override
                                public void onClick(View v) {
                                        // TODO Auto-generated method stub
                                        if(seconda1.isChecked())
                                                prima1.setChecked(false);
                                            terza1.setChecked(false);
                                }
                        });
                       
                        terza1.setOnClickListener(new OnClickListener() {
                               
                                @Override
                                public void onClick(View v) {
                                        // TODO Auto-generated method stub
                                        if(terza1.isChecked())
                                                prima1.setChecked(false);
                                            seconda1.setChecked(false);
                                }
                        });
                        punteggio1=(TextView)findViewById(R.id.risultato);
                        risultato = (Button)findViewById(R.id.conferma5);
                        risultato.setOnClickListener(new OnClickListener() {
                               
                                @Override
                                public void onClick(View v) {
                                        // TODO Auto-generated method stub
                                        if(tot<30){
                                        punteggio1.setText("NON HAI PASSATO LA PROVA.IL TUO PUNTEGGO FINALE E'DI "+(num1+num2)+" PUNTI SU 50.RIVEDI I CAPITOLI INERENTI ALLE DOMANDE SBAGLIATE CLICCANDO SUL NOME DEL CAPITOLO SOTTO LA DOMANDA.");
                                        punteggio1.setTextColor(Color.RED);
                                        }
                                        else if(tot>30){
                                                punteggio1.setText("COLIMENTI HA SUPERATO LA PROVA!!IL TUO PUNTEGGO FINALE E'DI "+(num1+num2)+" PUNTI SU 50.RIVEDI I CAPITOLI INERENTI ALLE DOMANDE SBAGLIATE CLICCANDO SUL NOME DEL CAPITOLO SOTTO LA DOMANDA PER MIGLIORARE ANCORA.");
                                                punteggio1.setTextColor(Color.GREEN);
                                        }
                                }
                        });
                          final Button conferma2=(Button)findViewById(R.id.conferma4);
                                final CheckBox prima2=(CheckBox)findViewById(R.id.risp1_3);
                                final CheckBox seconda2= (CheckBox)findViewById(R.id.risp2_3);
                        final CheckBox terza2= (CheckBox)findViewById(R.id.risp3_3);
                                final TextView valuta2 = (TextView)findViewById(R.id.valutazione3);
                                conferma2.setOnClickListener(new OnClickListener() {
                                       
                                        @Override
                                        public void onClick(View v) {
                                               
                                       
                                                // TODO Auto-generated method stub
                                                if(prima2.isChecked()){
                                                       
                                                        Toast.makeText(getBaseContext(),rispostaEsatta, Toast.LENGTH_LONG).show();
                                                        //int punto =0;
                                                //punteggio =punto-3;
                                                        tot=3+num1+num2;
                                                num3=3;
                                                valuta.setText(Integer.toString(num3)+ " punti");
                                                valuta2.setTextSize(20);
                                               
                                                prima2.setBackgroundColor(Color.GREEN);
                                                //terza2.setBackgroundColor(Color.GREEN);
                                               
                                                conferma2.setOnClickListener(null);
                                               
                                               
                                                }
                                                        if (seconda2.isChecked()){
                                                                Toast.makeText(getBaseContext(),rispostaErrata, Toast.LENGTH_LONG).show();
                                                                tot=0+num1+num2;
                                                                num3=0;
                                                                valuta.setText(Integer.toString(num3)+ " punti");
                                                        valuta2.setTextSize(20);
                                                        seconda2.setBackgroundColor(Color.RED);
                                                        prima2.setBackgroundColor(Color.GREEN);
                                                        punteggio =0;
                                                        conferma2.setOnClickListener(null);}
                                                          if (terza2.isChecked()){
                                                                  Toast.makeText(getBaseContext(), rispostaErrata, Toast.LENGTH_LONG).show();
                                                                  tot=0+num1+num2;
                                                                  num3=0;
                                                                        valuta2.setText(Integer.toString(num3)+ " punti");
                                                                  valuta2.setTextSize(20);
                                                                  terza2.setBackgroundColor(Color.RED);
                                                                  prima.setBackgroundColor(Color.GREEN);
                                                                 
                                                                  //punteggio =+3;
                                                                  conferma2.setOnClickListener(null);
                                                                 
                                        }}
                                });
                               
                                prima2.setOnClickListener(new OnClickListener() {
                                       
                                        @Override
                                        public void onClick(View v) {
                                                // TODO Auto-generated method stub
                                                if(prima2.isChecked())
                                                        seconda2.setChecked(false);
                                                        terza2.setChecked(false);
                                        }
                                });
                               
                                seconda2.setOnClickListener(new OnClickListener() {
                                       
                                        @Override
                                        public void onClick(View v) {
                                                // TODO Auto-generated method stub
                                                if(seconda2.isChecked())
                                                        prima2.setChecked(false);
                                                    terza2.setChecked(false);
                                        }
                                });
                               
                                terza2.setOnClickListener(new OnClickListener() {
                                       
                                        @Override
                                        public void onClick(View v) {
                                                // TODO Auto-generated method stub
                                                if(terza2.isChecked())
                                                        prima2.setChecked(false);
                                                    seconda2.setChecked(false);
                                        }
                                });
                                punteggio1=(TextView)findViewById(R.id.risultato);
                                risultato = (Button)findViewById(R.id.conferma5);
                                risultato.setOnClickListener(new OnClickListener() {
                                       
                                        @Override
                                        public void onClick(View v) {
                                                // TODO Auto-generated method stub
                                                if(tot<30){
                                                punteggio1.setText("NON HAI PASSATO LA PROVA.IL TUO PUNTEGGO FINALE E'DI "+(tot)+" PUNTI SU 50.RIVEDI I CAPITOLI INERENTI ALLE DOMANDE SBAGLIATE CLICCANDO SUL NOME DEL CAPITOLO SOTTO LA DOMANDA.");
                                                punteggio1.setTextColor(Color.RED);
                                                }
                                                else if(tot>30){
                                                        punteggio1.setText("COLIMENTI HA SUPERATO LA PROVA!!IL TUO PUNTEGGO FINALE E'DI "+(tot)+" PUNTI SU 50.RIVEDI I CAPITOLI INERENTI ALLE DOMANDE SBAGLIATE CLICCANDO SUL NOME DEL CAPITOLO SOTTO LA DOMANDA PER MIGLIORARE ANCORA.");
                                                        punteggio1.setTextColor(Color.GREEN);
                                                }
                                        }
                                });
       
        next.setOnClickListener(new OnClickListener() {
               
                @Override
                public void onClick(View v) {
                        // TODO Auto-generated method stub
                if(tot>=9){
                        Intent capitolo2=new Intent(QuizActivity.this,QuizSeconda.class);
                        Toast.makeText(getBaseContext(), "Complimenti hai superato il primo capitolo", Toast.LENGTH_LONG).show();
                        startActivity(capitolo2);
                }
                else
                {
                        Toast.makeText(getBaseContext(), "Devi fare almeno 9 punti per passare al prossimo capitolo", Toast.LENGTH_LONG).show();
                }
                }
        });
       
       
        }

                @Override
                public boolean onCreateOptionsMenu(Menu menu) {
                        // Inflate the menu; this adds items to the action bar if it is present.
                        getMenuInflater().inflate(R.menu.quiz, menu);
                        return true;
                }
               

                @Override
                public boolean onOptionsItemSelected(MenuItem item) {

                        switch(item.getItemId())
                        {
                        case R.id.action_edit:
                                Toast.makeText(getBaseContext(), "Rivedi i tuoi appunti",Toast.LENGTH_LONG ).show();
                                Intent prova = new Intent(QuizActivity.this,AppuActivity.class);
                                startActivity(prova);
                                return true;
                        case R.id.action_settings:
                                Toast.makeText(getBaseContext(), "Impostazioni",Toast.LENGTH_LONG).show();
                                Intent setting = new Intent(QuizActivity.this,ImpostazioniActivity.class);
                                startActivity(setting);
                               
                               
                        case android.R.id.home:
                            // app icon in action bar clicked; goto parent activity.
                                AlertDialog.Builder miaAlert = new AlertDialog.Builder(this);
                                miaAlert.setMessage("Vuoi davvero uscire e terminare il questionario?");
                                miaAlert.setTitle("ATTENZIONE");

                                miaAlert.setCancelable(false);
                                miaAlert.setPositiveButton("Si", new DialogInterface.OnClickListener() {
                                  public void onClick(DialogInterface dialog, int id) {
                                    finish();
                                               
                                               
                                  }
                                });
                                   
                                miaAlert.setNegativeButton("No", new DialogInterface.OnClickListener() {
                                  public void onClick(DialogInterface dialog, int id) {
                                     
                                  }
                                });

                                AlertDialog alert = miaAlert.create();
                                alert.show();
                           
                            return true;
                        }
                        return super.onOptionsItemSelected(item);
                       
                        // Handle action bar item clicks here. The action bar will
                        // automatically handle clicks on the Home/Up button, so long
                        // as you specify a parent activity in AndroidManifest.xml.
                        /*int id = item.getItemId();
                        if (id == R.id.action_settings) {
                                return true;
                        }
                        return super.onOptionsItemSelected(item);
                }*/

        }}

Offline AnonymousDoor

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Play Store ID:
    Gheoo
Re:Memorizzare lo stato di un app quando viene chiusa
« Risposta #10 il: 11 Marzo 2015, 22:01:45 CET »
0
Ciao Domani che sarò a casa con il computer (al momento sono da smartphone) provo ad aiutarti perche non si capisce granché da tapatalk

Offline Claudio84

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    smartphone
  • Sistema operativo:
    windows 7
Re:Memorizzare lo stato di un app quando viene chiusa
« Risposta #11 il: 11 Marzo 2015, 22:06:41 CET »
0
ok grazie mille...sei gentilissimo!!!

Offline AnonymousDoor

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Play Store ID:
    Gheoo
Re:Memorizzare lo stato di un app quando viene chiusa
« Risposta #12 il: 11 Marzo 2015, 22:20:23 CET »
0



Post unito: 12 Marzo 2015, 17:40:02 CET
ciao allora ho visto il codice la devi mettere a ogni click della checkbox
quindi ad esempio per la prima parte del quiz la variabile boolean si potrebbe chiamare primapt e a ogni spunta di una delle checkbox di quel livello devi settarla true ... assicurati poi che quelle degli altri livelli stiano a false
« Ultima modifica: 12 Marzo 2015, 17:40:02 CET da AnonymousDoor, Reason: Merged DoublePost »

Offline Claudio84

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    smartphone
  • Sistema operativo:
    windows 7
Re:Memorizzare lo stato di un app quando viene chiusa
« Risposta #13 il: 12 Marzo 2015, 20:08:42 CET »
0
OK.ho capito il meccanismo...ma non ho capito come metterlo giù sotto forma di codice....ti va di darmi una mano?

Offline AnonymousDoor

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Play Store ID:
    Gheoo
Re:Memorizzare lo stato di un app quando viene chiusa
« Risposta #14 il: 12 Marzo 2015, 20:59:39 CET »
0
Certo domani dal PC haha

Inviato dal mio Nexus 5 utilizzando Tapatalk