在我的应用中,我让用户选择要显示的名称。它应显示为:
您好usertext
!
我可以成功更新设置。我使用了PreferenceActivity。 我也可以改变价值。但是要更改所选文本视图中的文本,我必须重新启动应用程序。
如何在用户更新设置中的值后立即更新我的文本视图?
答案 0 :(得分:1)
您可以使用SharedPreferences,但在设置值后不要忘记使用.apply。这是一个示例(不要忘记更改值以匹配您的editText,按钮,类等):
活动二(他们输入新值并保存):
public class settings extends MainActivity {
private Button mButton;
private EditText mEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
mButton = (Button) findViewById(R.id.submit);
mEditText = (EditText) findViewById(R.id.editTxtUsername);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0);
SharedPreferences.Editor editor = pref.edit();
if (mEditText.getText().length() > 0) {
editor.putString("username", mEditText.getText().toString());
editor.apply();
} else Toast.makeText(getApplicationContext(), "Please enter a valid username.", Toast.LENGTH_LONG).show();
}
});
}
}
活动一(您要查看用户名的位置):
public class MainActivity extends AppCompatActivity {
private TextView mTxtUsername;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTxtUsername = (TextView) findViewById(R.id.txtUsername);
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0);
String username = pref.getString("username", "");
mTxtUsername.setText(username);
}
}
这应该可行,并且会在下次打开应用时保存价值! 如果您对代码有任何问题,请告诉我,我刚刚快速启动它
答案 1 :(得分:1)
Preference.OnPreferenceChangeListener changeListener = new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
// Code goes here
return true;
}
};
EditTextPreference pref = (EditTextPreference)findPreference(getString(R.string.pref1));
pref1.setOnPreferenceChangeListener(changeListener);
EditTextPreference pref2 = (EditTextPreference)findPreference(getString(R.string.pref2));
pref2.setOnPreferenceChangeListener(changeListener);