0

私はまだ同じアプリを使用していて、プログラミングは初めてです。

そのため、EditText入力は復元されません...アプリにEditTextの入力を保存させたいと思いました。ユーザーがアプリを再度起動すると、EditText入力が復元されます...

Sharedpreferencesで何か間違ったプログラムを作成したと思います。ボタンをクリックするたびに、EditTextが削除され、入力が保存または復元されません...

私は何を間違えましたか?

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

}

4

2 に答える 2

1

// onPause()メソッドでのみデータを共有設定に保存しています。

ところで、あなたが「grade1r」を読んでいるボタンをクリックすると、それは空になるので、デフォルト値は「」になります

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

デフォルトが印刷であることを確認したい場合は、次のようにしてください

String rememberedText1 = mPrefs.getString("grade1r", "myDefault value");
于 2012-05-23T12:55:44.640 に答える
0

ボタンをクリックすると、SharedPreferencesから値が復元されます。また、デフォルト値は空の文字列です。ただし、アプリケーションを一時停止するときに値を保存します。テキストボックスにテキストを入力してアプリを閉じてみてください。その後、アプリを起動してそのボタンをクリックすると、テキストが復元されます。

于 2012-05-23T13:03:10.550 に答える