简体   繁体   中英

Edittext won't restore

I'm still on the same app and i am new to programming.

So, the EditText input won't restore... I wanted to make the app save the Input of the EditText, and when the user starts the app again the EditText input will be restored...

I think I programmed something wrong with the Sharedpreferences, everytime when I click on the button the EditText will be deleted and doesn't save the input or restore...

What did I wrong?

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

    bCalculate = (Button) findViewById(R.id.bCalculate);
    display = (TextView) findViewById(R.id.TvDisplay);

    AdView ad = (AdView) findViewById(R.id.ad);
    ad.loadAd(new AdRequest());

    bCalculate.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub

            InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

            inputManager.hideSoftInputFromWindow(getCurrentFocus()
                    .getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

            int error = 0;
            int anzahlGraden = 0;
            double d1 = 0.0, d2 = 0.0, d3 = 0.0, d4 = 0.0, d5 = 0.0, d6 = 0.0, d7 = 0.0, d8 = 0.0, d9 = 0.0, d10 = 0.0;

            EditText Grade1r = (EditText) findViewById(R.id.Grade1r);
            String Grade1 = Grade1r.getText().toString();

            EditText Grade2r = (EditText) findViewById(R.id.Grade2r);
            String Grade2 = Grade2r.getText().toString();

            EditText Grade3r = (EditText) findViewById(R.id.Grade3r);
            String Grade3 = Grade3r.getText().toString();

            EditText Grade4r = (EditText) findViewById(R.id.Grade4r);
            String Grade4 = Grade4r.getText().toString();

            EditText Grade5r = (EditText) findViewById(R.id.Grade5r);
            String Grade5 = Grade5r.getText().toString();

            EditText Grade6r = (EditText) findViewById(R.id.Grade6r);
            String Grade6 = Grade6r.getText().toString();

            EditText Grade7r = (EditText) findViewById(R.id.Grade7r);
            String Grade7 = Grade7r.getText().toString();

            EditText Grade8r = (EditText) findViewById(R.id.Grade8r);
            String Grade8 = Grade8r.getText().toString();

            EditText Grade9r = (EditText) findViewById(R.id.Grade9r);
            String Grade9 = Grade9r.getText().toString();

            EditText Grade10r = (EditText) findViewById(R.id.Grade10r);
            String Grade10 = Grade10r.getText().toString();

            if (Grade1.equals("")) {
                error++;
            } else {
                d1 = Double.parseDouble(Grade1);
                anzahlGraden++;
            }

            if (Grade2.equals("")) {
                error++;
            } else {
                d2 = Double.parseDouble(Grade2);
                anzahlGraden++;
            }

            if (Grade3.equals("")) {
                error++;
            } else {
                d3 = Double.parseDouble(Grade3);
                anzahlGraden++;
            }

            if (Grade4.equals("")) {
                error++;
            } else {
                d4 = Double.parseDouble(Grade4);
                anzahlGraden++;
            }

            if (Grade5.equals("")) {
                error++;
            } else {
                d5 = Double.parseDouble(Grade5);
                anzahlGraden++;
            }

            if (Grade6.equals("")) {
                error++;
            } else {
                d6 = Double.parseDouble(Grade6);
                anzahlGraden++;
            }

            if (Grade7.equals("")) {
                error++;
            } else {
                d7 = Double.parseDouble(Grade7);
                anzahlGraden++;
            }

            if (Grade8.equals("")) {
                error++;
            } else {
                d8 = Double.parseDouble(Grade8);
                anzahlGraden++;
            }

            if (Grade9.equals("")) {
                error++;
            } else {
                d9 = Double.parseDouble(Grade9);
                anzahlGraden++;
            }

            if (Grade10.equals("")) {
                error++;
            } else {
                d10 = Double.parseDouble(Grade10);
                anzahlGraden++;
            }

            if (error > 8) {
                display.setText("Please enter more then 2 grades.");
            } else {

                double gesamt = d1 + d2 + d3 + d4 + d5 + d6 + d7 + d8 + d9
                        + d10;

                double resultat = gesamt / anzahlGraden;

                display.setText("Your average is " + resultat);

            }

             mPrefs = getSharedPreferences(Grade1, 0);

             String rememberedText1 = mPrefs.getString("grade1r", "");
             grade1r = (EditText) findViewById(R.id.Grade1r);
             grade1r.setText(rememberedText1);
        }

    });

}
 protected void onPause() {
     super.onPause();

     SharedPreferences.Editor ed = mPrefs.edit();
     ed.putString("grade1r", grade1r.getText().toString());
     ed.commit();
 }

}

//you are saving the data to shared pref only in onPause() method.

BTW when you click the button your are reading the "grade1r" it will be empty so the default value is "" is coming

String rememberedText1 = mPrefs.getString("grade1r", "");

if your want to check the default is printing do like this

String rememberedText1 = mPrefs.getString("grade1r", "myDefault value");

When you click a button you restore a value from the SharedPreferences. And your default value is an empty string. However, you save a value when you pause your application. Try to enter some text in the textbox and close your app, after that launch your app and click that button, the text should be restored.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM