2012-05-16 9 views
5

Duplicar posible:
How do I save an Android application's state?Android: Guardar un estado de la instancia cuando la aplicación está cerrada

Soy nuevo en Java y Android y la construcción de algunos proyectos pequeños para aprender. Hice una aplicación de seguimiento de dinero que permite al usuario ingresar valores y simplemente continúa restando. Todo funciona bien, pero quería que los valores se guardaran o caché cuando la aplicación se cierra y se vuelve a abrir. Leyendo, encontré tal vez un OnPause que haría el truco, pero aún no lo entiendo al 100%.

¿Alguien puede recomendar cómo hacer esto y cómo aplicar a mi código?

¡Muchas gracias por su ayuda!

package ps.age.sl; 


import java.text.NumberFormat; 
import java.util.Locale; 


import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.TextView; 


public class MoneyTrackerActivity extends Activity { 
    /** Called when the activity is first created. */ 
     ImageButton subtract; 


     EditText startingmoney,submoney, endmoney, tracker; 
     Locale currentLocale = Locale.getDefault(); 





    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

    // startingmoney = (EditText) findViewById (R.id.firstmoney); 
     // submoney = (EditText) findViewById (R.id.submoney); 
     // subtract = (ImageButton) findViewById (R.id.subbutton); 
     // endmoney = (EditText) findViewById (R.id.endtv); 
     // tracker = (EditText) findViewById (R.id.trackertv); 

     startingmoney.setText(""); 
     submoney.setText(""); 
     endmoney.setText(""); 

subtract.setOnClickListener(new View.OnClickListener() { 
     double currentValue=0;  
     double startValue=0;  
      public void onClick(View v) throws NumberFormatException { 


        if (v == subtract) 
       { 
       NumberFormat currencyFormatter; 
       currencyFormatter = NumberFormat.getCurrencyInstance(currentLocale); 



        String totalString; 
        String x = startingmoney.getText().toString(); 
        String y = submoney.getText().toString(); 
          double total; 
         double xm = 0.00; 
         double ym =0.00; 

         try 
          { 
           xm = Double.parseDouble(x); 
          } 
         catch(NumberFormatException n) 
          { 
           xm = 0.00; 
          } 
         try 
         { 
           ym = Double.parseDouble(y); 
         } 
         catch(NumberFormatException n) 
         { 
           ym = 0.00; 
         } 

        if(startValue!=xm){ 
         startValue=xm; 
         currentValue=xm; 
        } 

        currentValue = currentValue -ym; 


        totalString = currencyFormatter.format(currentValue); 
        endmoney.setText(totalString); 

        tracker.setText("you have entered " + totalString +"\n" + tracker.getText().toString()); 



       } 
        } 
             }); 
    } 
       } 

Respuesta

3

Utilice SharedPreferences para almacenar los datos en Almacenamiento de aplicaciones privadas. La implementación de SharedPrefernces en el método onPause, como a continuación:

@Override 
    protected void onPause() 
    { 
     super.onPause(); 
     // Store values between instances here 
     SharedPreferences preferences = getSharedPreferences("sharedPrefs", 0); 
     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putString("CLASSLABEL", this.getLocalClassName()); // value to store 
     editor.putString("STRINGLABEL",String1); 
     editor.putString("STRINGLABEL1",String2); 
     // Commit to storage 
     editor.commit(); 
    } 
+0

¿Por qué utilizar SharedPreferences en lugar de un lote en onSaveInstanceState? –

Cuestiones relacionadas