2012-05-16 28 views
5

Mögliche Duplizieren geschlossen ist:
How do I save an Android application's state?Android: Speichern Sie eine Instanz Zustand, wenn app

Ich bin neu in Java und Android und einige kleine Projekte an zu lernen. Ich machte eine Geld-Tracking-App, die es dem Benutzer erlaubt, Werte einzugeben, und es wird einfach weiter subtrahiert. Alles funktioniert gut, aber ich wollte, dass die Werte gespeichert oder zwischengespeichert werden, wenn die App geschlossen und wieder geöffnet wird. Lesen, ich fand vielleicht eine OnPause würde den Trick, aber immer noch nicht 100% verstehen.

Kann mir jemand empfehlen, wie man das macht und wie man es auf meinen Code anwendet?

Vielen Dank für Ihre Hilfe !!

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()); 



       } 
        } 
             }); 
    } 
       } 

Antwort

3

Verwenden Sie bitte SharedPreferences, um die Daten im privaten Anwendungsspeicher zu speichern. Die Implementierung SharedPrefernces in onPause Verfahren wie unten:

@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

Warum Sie SharedPreferences anstelle eines Bundle in onSaveInstanceState verwenden sollte? –