0

あるアクティビティからの EditText 入力を保存し、別のアクティビティで文字列値を表示する SharedPreferences があります。

EditText フィールドに入力を入力し、(私が作成したボタン) [保存] (EditText をエディターにコミットする) を押すと、ファイルが正常に保存されます。ただし、表示アクティビティ (SharedPreferences に格納された文字列値を表示する) は値を表示しません。onCreateだからだと思いますので、実行すると画面が「作成」されます。ユーザーがすぐにコミット (保存を押す) したときに EditText 値を更新するにはどうすればよいですか?

CustomStoreEditActivity - ユーザー入力 (EditText エントリ) を保存するだけです。

    final Button saveButton = (Button) findViewById(R.id.saveButton);
    saveButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View arg0) {
            if (saveButton.isClickable()) {
                SharedPreferences prefs = getSharedPreferences(
                        "customtime", 0);
                // prefs.registerOnSharedPreferenceChangeListener(this);
                final SharedPreferences.Editor edit = prefs.edit();
                EditText shopName = (EditText) findViewById(R.id.shopName);
                EditText open1 = (EditText) findViewById(R.id.open1);
                EditText close1 = (EditText) findViewById(R.id.close1);
                EditText open2 = (EditText) findViewById(R.id.open2);
                EditText close2 = (EditText) findViewById(R.id.close2);
                EditText open3 = (EditText) findViewById(R.id.open3);
                EditText close3 = (EditText) findViewById(R.id.close3);
                EditText open4 = (EditText) findViewById(R.id.open4);
                EditText close4 = (EditText) findViewById(R.id.close4);
                EditText open5 = (EditText) findViewById(R.id.open5);
                EditText close5 = (EditText) findViewById(R.id.close5);
                EditText open6 = (EditText) findViewById(R.id.open6);
                EditText close6 = (EditText) findViewById(R.id.close6);
                EditText open7 = (EditText) findViewById(R.id.open7);
                EditText close7 = (EditText) findViewById(R.id.close7);
                EditText comments = (EditText) findViewById(R.id.comments);
                edit.putString("shopName", shopName.getText().toString());
                edit.putString("Monday1", open1.getText().toString());
                edit.putString("Monday2", close1.getText().toString());
                edit.putString("Tuesday1", open2.getText().toString());
                edit.putString("Tuesday2", close2.getText().toString());
                edit.putString("Wednesday1", open3.getText().toString());
                edit.putString("Wednesday2", close3.getText().toString());
                edit.putString("Thursday1", open4.getText().toString());
                edit.putString("Thursday2", close4.getText().toString());
                edit.putString("Friday1", open5.getText().toString());
                edit.putString("Friday2", close5.getText().toString());
                edit.putString("Saturday1", open6.getText().toString());
                edit.putString("Saturday2", close6.getText().toString());
                edit.putString("Sunday1", open7.getText().toString());
                edit.putString("Sunday2", close7.getText().toString());
                edit.putString("comments", comments.getText().toString());
                edit.commit();
                Intent myIntent = new Intent(getBaseContext(),
                        CustomStoreActivity.class);
                myIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                startActivity(myIntent);

                Toast.makeText(getBaseContext(), "Opening Hours Saved!",
                        Toast.LENGTH_SHORT).show();

            }

        }
    });

}

CustomStoreActivity - 問題があると思われる場所:

    private void displayPreferences(){

    SharedPreferences prefs = getSharedPreferences("customtime", 0);
    String shopName = prefs.getString("shopName", "Empty");
    String shopTime1 = prefs.getString("Monday1", " ");
    String shopTime2 = prefs.getString("Monday2",  " ");
    String shopComments = prefs.getString("comments", "");

    TextView displayPrefs = (TextView) findViewById(R.id.displayPrefs);

    displayPrefs.setText(shopName + shopTime1 + shopTime2 + shopComments);

}

十分な時間をありがとうございました。

4

2 に答える 2

1

あなたが探しているのは、のonResume代わりにCustomStoreActivity コードを入れることだと思いますonCreate。移動するコードは、 が最前面に表示さonResumeれるたびに発生します (最初に作成されたときを含む)。CustomStoreActivity

を含むCustomStoreActivityを起動するために を使用すると仮定すると、 を使用する代わりに、 を使用して結果にデータを返すという別の方法があります。 簡単な例を次に示します (ただし、この例の呼び出しは、Android ドキュメントでここに記載されているように、 を渡したい場所に渡されることに注意してください)。ActivityEditTextstartActivityForResultIntentSharedPreferencessetResultnullIntent

またActivity、編集可能なフィールドを持つダイアログ ボックスのように 2 番目を使用しようとしているようです。その場合、別のクラスを作成して同じように動作させるのではなく、実際にDialogクラス内でクラスのバリアントを使用するという別の方法もあります。ダイアログについては、Android のドキュメントを参照してください。CustomStoreActivityActivity

于 2012-04-19T17:47:27.240 に答える
0

あなたの質問を本当に理解しているかどうかはわかりませんが、現在のアクティビティとは異なるアクティビティの TextView を更新しようとしていますか? その場合、これは実行できないと思います。インテントを使用してデータをアクティビティに渡す必要があります

于 2012-04-19T17:50:48.250 に答える