10

今回は同じプロジェクトで、res/xml フォルダーの settings.xml ファイルで少し難しい問題に直面しています。

<EditTextPreference
    android:key="weight" 
    android:title="@string/update_user_weight"
    android:persistent="true"
    android:dialogTitle="@string/update_user_weight"
    android:dialogMessage="@string/update_user_weight_message"
    android:defaultValue="" />

<EditTextPreference
    android:key="age"
    android:title="@string/update_user_age"
    android:persistent="true"
    android:dialogTitle="@string/update_user_age"
    android:dialogMessage="@string/update_user_age_message"
    android:defaultValue="" />

およびクラス ファイル UserData.java で:

SharedPreferences storeWeightAndAge = getSharedPreferences("WeightAndAgeStorage", Context.MODE_PRIVATE);
Editor store = storeWeightAndAge.edit();
store.putString("weight", weightData);
store.putString("age", ageData);
store.commit();

私がここでやろうとしているのは、上記の 2 つの EditTextPreferencesandroid:defaultValueをそれぞれ格納されweightageものに設定することSharedPreferences です。

さて、どうやってそれを行うのですか?

編集: settings.xml ファイルを使用する提供された Settings.java ファイル:

package com.example.drinkup;

import android.content.SharedPreferences;
import android.os.*;
import android.preference.PreferenceFragment;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;

public class Settings extends PreferenceActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);



    }

}
4

3 に答える 3

5

わかりました、わかりました:

import android.preference.EditTextPreference;

public class Settings extends PreferenceActivity {


    EditTextPreference weightEditTextPreference;
    EditTextPreference ageEditTextPreference;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);

        weightEditTextPreference = (EditTextPreference)findPreference("weight");
        ageEditTextPreference = (EditTextPreference)findPreference("age");

        SharedPreferences getWeightAndAgeStore = getSharedPreferences("weightAndAgeStorage", Context.MODE_PRIVATE);
        weightEditTextPreference.setText(getWeightAndAgeStore.getString("weight", "0"));
        ageEditTextPreference.setText(getWeightAndAgeStore.getString("age", "0"));

これが行うことは、EditText ボックスをSharedPreferences' 保存されたキー (この場合は のweight)データに設定することです。このダイアログ ボックスを押すとポップアップします。ageWeightAndAgeStorage

現在または将来これを読んでいる他の誰かが (しかし、過去はどうだったでしょうか?) この発見から恩恵を受けることを願っています.

乾杯!

于 2015-02-08T03:28:09.400 に答える
5

まず、 のデフォルト値を設定しますEditTextPreference。値は型として格納されStringます。例えば:

<EditTextPreference
    android:key="weight"
    android:defaultValue="enter your value (54)"
    ... />

<EditTextPreference
    android:key="age"
    android:defaultValue="enter your value"
    ... />

次に、アプリのアクティビティが最初に開始されるアクティビティにデフォルト値を適用します (最初にインストールされたら)。たとえば、MainActivityonCreate()メソッドでは次のようになります。

PreferenceManager.setDefaultValue(this, R.xml.settings, false);
于 2015-02-07T18:01:58.700 に答える
0

あなたがしなければならないことは、sharedPreferences.getString() を使用してから、それに editext.setText() を使用することだけです。

于 2015-02-07T19:04:40.357 に答える