Salvare il click su di un Button

Claudio84

Nuovo Utente
19 Mar 2015
7
0
0
Ciao a tutti...ho un problema con l app che sto creando..vorrei salvare il click di un button con tutti i suoi eventi in modo che quando riapro l applicazione, mi trovo nella situazione in cui l ho lasciata..
 
Ciao,
dovresti fornire maggiori dettagli per poter meglio indirizzarti.
Descrivi che cosa hai di fronte, cosa succede al click del button e cosa vorresti accada quando riapri l'applicazione.
Insomma facci un esempio.
 
Si scusa hai ragione...allore in poche parole ho un activity dove ho creato un questionario...per ogni domanda ci sono 3 checkBox e un Button.ogni checkBox equivale ad una risposta.se l utente clicca una risposta sbagliata e poi conferma con il button, si colora di verde la risposta esatta, di rosso quella cliccata dall utente e compare una textView con il punteggio...bene fin qui tutto ok...sono riuscito con le sharedPreferences a salvare il click delle check box però io vorrei che quando l utente chiude e riapre l app, si ritrovasse come quando l ha chiusa....quindi risposta errata rossa,risposta giusta verde e textview con il punteggio...al momento quando riapro l app mi trovo solo la checkbox cliccata ma tutto il resto no...devo ricliccare il button per far apparire tutto
 
Ciao Claudio, le ragioni possono essere infinte. Stiamo parlando di codice quindi se non dettagli ancora meglio non posso aiutarti sufficientemente.
Ti invito a dare un occhio ai primi risultati di Google riguardo "save activity state app android"
 
Ho guardato il suggerimento che mi hai dato...ma non ho capito molto e ho deciso di abbandonare questa cosa...ora vorrei fare sempre quel questionario con domanda e tre checkbox ma aggiungere un pulsante next che mi cambia il layout e mi presenta una nuova domanda...piccolo problema non riesco a farlo..come posso fare senza creare 1000 activity a fare un questionario con una sola activity che al click del button next mi cambia domanda?
 
Ho guardato il suggerimento che mi hai dato...ma non ho capito molto e ho deciso di abbandonare questa cosa...ora vorrei fare sempre quel questionario con domanda e tre checkbox ma aggiungere un pulsante next che mi cambia il layout e mi presenta una nuova domanda...piccolo problema non riesco a farlo..come posso fare senza creare 1000 activity a fare un questionario con una sola activity che al click del button next mi cambia domanda?

Al click su next inserisci la domanda e la risposta all'interno di una lista e carichi la successiva domanda:

Codice:
 t=(TextView)findViewById(R.id.TextView01); 
    t.setText("......................");
 
Ok..quello sono riuscito a farlo..posto il codice...qui ho masso 3 domande...il problema è che cliccando su next, mi salta la seconda domanda e passa direttamente sulla terza..non capisco perche...
Codice:
public class MainActivity extends Activity
{CheckBox a,b,c;
TextView domanda,rivedi,punteggio;
Button conf,next;
int punto;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
	{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
		a=(CheckBox)findViewById(R.id.uno);
		b=(CheckBox)findViewById(R.id.due);
		c=(CheckBox)findViewById(R.id.tre);
		next=(Button)findViewById(R.id.next);
		conf=(Button)findViewById(R.id.conferma);
		rivedi=(TextView)findViewById(R.id.rivedi);
		punteggio=(TextView)findViewById(R.id.punteggio);
		domanda=(TextView)findViewById(R.id.domanda);
		domanda.setText("prima domanda");
		a.setText("risp1");
		b.setText("risp2");
		c.setText("risp 3");
		
		conf.setOnClickListener(new OnClickListener(){
			public void onClick(View v){
				if(a.isChecked()){
					a.setBackgroundColor(Color.GREEN);
				punteggio.setText(punto+" Punto");
				}
			}
		});
		next.setOnClickListener(new OnClickListener(){
			
			
			public void onClick(View v){
				domanda.setText("domanda 2");
				a.setText("risp1.2");
				b.setText("risp2.2");
				c.setText("risp3.2");
				a.setChecked(false);
				a.setBackgroundColor(Color.WHITE);
				conf.setOnClickListener(new OnClickListener(){
						public void onClick(View v){
							if(a.isChecked()){
								a.setBackgroundColor(Color.RED);
							}
						}
					});
				}
		});
		next.setOnClickListener(new OnClickListener(){


				public void onClick(View v){
					domanda.setText("domanda 3");
					a.setText("risp1.3");
					b.setText("risp2.3");
					c.setText("risp3.3");
					a.setChecked(false);
					a.setBackgroundColor(Color.WHITE);
					conf.setOnClickListener(new OnClickListener(){
							public void onClick(View v){
								if(a.isChecked()){
									a.setBackgroundColor(Color.RED);
								}
							}
						});
				}
			});
    }
	
}
 
Ok..quello sono riuscito a farlo..posto il codice...qui ho masso 3 domande...il problema è che cliccando su next, mi salta la seconda domanda e passa direttamente sulla terza..non capisco perche...
Codice:
public class MainActivity extends Activity
{CheckBox a,b,c;
TextView domanda,rivedi,punteggio;
Button conf,next;
int punto;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
	{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
		a=(CheckBox)findViewById(R.id.uno);
		b=(CheckBox)findViewById(R.id.due);
		c=(CheckBox)findViewById(R.id.tre);
		next=(Button)findViewById(R.id.next);
		conf=(Button)findViewById(R.id.conferma);
		rivedi=(TextView)findViewById(R.id.rivedi);
		punteggio=(TextView)findViewById(R.id.punteggio);
		domanda=(TextView)findViewById(R.id.domanda);
		domanda.setText("prima domanda");
		a.setText("risp1");
		b.setText("risp2");
		c.setText("risp 3");
		
		conf.setOnClickListener(new OnClickListener(){
			public void onClick(View v){
				if(a.isChecked()){
					a.setBackgroundColor(Color.GREEN);
				punteggio.setText(punto+" Punto");
				}
			}
		});
		next.setOnClickListener(new OnClickListener(){
			
			
			public void onClick(View v){
				domanda.setText("domanda 2");
				a.setText("risp1.2");
				b.setText("risp2.2");
				c.setText("risp3.2");
				a.setChecked(false);
				a.setBackgroundColor(Color.WHITE);
				conf.setOnClickListener(new OnClickListener(){
						public void onClick(View v){
							if(a.isChecked()){
								a.setBackgroundColor(Color.RED);
							}
						}
					});
				}
		});
		next.setOnClickListener(new OnClickListener(){


				public void onClick(View v){
					domanda.setText("domanda 3");
					a.setText("risp1.3");
					b.setText("risp2.3");
					c.setText("risp3.3");
					a.setChecked(false);
					a.setBackgroundColor(Color.WHITE);
					conf.setOnClickListener(new OnClickListener(){
							public void onClick(View v){
								if(a.isChecked()){
									a.setBackgroundColor(Color.RED);
								}
							}
						});
				}
			});
    }
	
}

Dando un occhio al volo mi par di vedere che hai impostato 2 click event sul pulsante Next, quindi lui esegue sempre l'ultimo.

Ti do un idea di come potresti strutturare:
Codice:
Vettore domande[];
Vettore risposte[];
int numero = 1;

Main(){
   caricaDomanda(numero);
}

caricaDomanda(int i){
  caricaElementiGrafici(domande[i]);
}

clickRisposta(){
  if (risposte(numero) = rispostaFornita){
    numero = numero +1;
    caricaDomanda(numero);
  }else{
    scrivi risposta errata
  }
}
 
Grazie mille..sono riuscito a fare buona parte di quello che avevo intenzione di creare..l unica cosa che non riesco a fare è come associare la risposta esatta alla checkbox e come cambiare la checkbox con la risposta esatta per ogni domanda
Codice:
 public class MainActivity extends Activity
{CheckBox a,b,c;
TextView domanda,rivedi,punteggio;
Button conf,next;
int punto;
int numero=0;
String ciao="g";
String risp="risp1";
String domande[]={"domanda 1","domanda 2","domanda 3","domanda4"};
String rispEsatte[]={"risp1","risp2"};
String risposte[]={"risp1","risp2","risp3,","risp4","risp5","risp6","risp7","risp8","risp9","rispq0","risp11","risp12","risp13","risp14"};
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
	{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
		a=(CheckBox)findViewById(R.id.uno);
		b=(CheckBox)findViewById(R.id.due);
		c=(CheckBox)findViewById(R.id.tre);
		next=(Button)findViewById(R.id.next);
		conf=(Button)findViewById(R.id.conferma);
		rivedi=(TextView)findViewById(R.id.rivedi);
		punteggio=(TextView)findViewById(R.id.punteggio);
		domanda=(TextView)findViewById(R.id.domanda);
		domanda.setText(domande[0]);
		a.setText(risposte[0]);
		b.setText(risposte[1]);
		c.setText(risposte[2]);
		next.setOnClickListener(new OnClickListener(){
			public void onClick(View v){
				//if(a.isChecked()){
					
							
						
					
					clickRisposta();
					}
					
				
			
		});
				}
			
    
	

	public void Main(){
		 caricaDomanda(numero);
		 
		 } 
		public void caricaDomanda(int i){ 
		domanda.setText(  domande[i]); 
		
		} 
	public void caricaRisposte(int i){ 
		a.setText(  risposte[i+2]); 
		b.setText(  risposte[i+3]);
		c.setText(  risposte[i+4]);
		}
		public void clickRisposta(){
			
			//if (risposte[numero] == rispEsatte[numero]&& z.isChecked()){ 
			//if(z.isChecked()){
				if(risposte[numero]==rispEsatte[0]){
			numero = numero +1; 
			caricaDomanda(numero);
			caricaRisposte(numero);
			a.setChecked(false);
			b.setChecked(false);
			c.setChecked(false);
				Toast.makeText(getBaseContext(),"Risposta esatta",Toast.LENGTH_LONG).show();
			}else{ 
			Toast.makeText(getBaseContext(),"Risposta sbagliata",Toast.LENGTH_LONG).show();
			} 
			}
			public void cambiaClick(){
				
			}

	
}
 

Discussioni simili