私はアンドロイドの初心者です。私はShared Preferencesの実装に関して混乱しています。私の目標は、ユーザーがMainFragmentで使用されるテキストを定義する文字列を使用することです。アプリケーションが実行されているときにユーザーがその文字列を変更できるという事実を考えると、リスナーも必要です。ですから、これまでのある書籍によると、私はSettingsActivityとSettingsFragmentを持っています。これまでAndroid SharedPreferences confusion
SettingsActivity:これまで
public class SettingsActivity extends AppCompatActivity {
private SharedPreferences prefs;
private String stringIWantToSave;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
getFragmentManager().beginTransaction().
replace(android.R.id.content, new SettingsFragment(), "settings_fragment").commit();
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
prefs = PreferenceManager.getDefaultSharedPreferences(this);
}
@Override
protected void onResume() {
super.onResume();
stringIWantToSave = prefs.getString("stringIWantToSave", "myString");
}
}
がSettingsFragment:
public class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {
private SharedPreferences sharedPreferences;
private String stringIWantToSave;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
}
@Override
public void onPause() {
sharedPreferences.registerOnSharedPreferenceChangeListener(this);
super.onPause();
}
@Override
public void onResume() {
super.onResume();
sharedPreferences.getString("stringIWantToSave", "myString");
sharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
}
}
私の質問は以下のとおりです。方法で
•どのように私は、ユーザーから変更された値を保存する必要がありますか?
•リスナーを実装して、文字列が変更されたことをMainFragmentに通知するにはどうすればよいですか? EditTextPreference
でSettingsActivity
を達成するために
者が設定アクティビティとフラグメントのためのクラスです〜、あなたはおそらくそれらを必要としません役立つことを願っています。私はあなたが何をしようとしているのか分かりませんが、ユーザーがいつこの文字列を変更できるかを知っていれば、それが変更されているかどうかを確認することができます。 SharedPreferencesは、すべてのActivityおよびFragmentクラスで使用できます。 – fapps
@fapps私は彼の名前を言うように変更する機能をユーザーに提供しようとしています。私は、メニューを配置し、メニュー内に、EditTextPreferenceがユーザに自分の名前を書き留めることを許可する設定というタブを設定することにしました。だからこそ私はそれらのクラスを作りました。 – kDoyle
したがって、xmlレイアウトでEditTextPreferenceを使用している場合は、キー値を 'key =" stringIWantToSave "で設定するだけで、必要なものすべてが実行されます。余分なコードはありません。 – fapps