2012-05-16 4 views
5

Можно создать дубликат:
How do I save an Android application's state?Android: Сохранение состояния экземпляра, когда приложение закрыто

Я новичок в Java и Android и строительство некоторых небольших проектов для изучения. Я сделал приложение для отслеживания денег, которое позволяет пользователю вводить значения, и он просто продолжает вычитать его. Все работает нормально, но я хотел, чтобы значения сохранялись или кешировались, когда приложение закрыто и снова открыто. Чтение, я обнаружил, что OnPause будет делать трюк, но все же не понимает его на 100%.

Может ли кто-нибудь порекомендовать, как это сделать и как применить к моему коду?

Большое вам спасибо за помощь!

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



       } 
        } 
             }); 
    } 
       } 

ответ

3

Пожалуйста, используйте SharedPreferences для хранения данных в частном приложении. Реализация SharedPrefernces в методе OnPause, как показано ниже:

@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

Почему вы должны использовать SharedPreferences вместо пучка в onSaveInstanceState? –

 Смежные вопросы

  • Нет связанных вопросов^_^