Android 首选项编辑文本而不是字符串
所以我的首选项中有EditText,我想获取文本并将其用作字符串。然后每次单击按钮时我都要使用该字符串,它会将我的另一个EditText文本设置为首选项中的字符串。代码:Android 首选项编辑文本而不是字符串,android,android-edittext,android-preferences,Android,Android Edittext,Android Preferences,所以我的首选项中有EditText,我想获取文本并将其用作字符串。然后每次单击按钮时我都要使用该字符串,它会将我的另一个EditText文本设置为首选项中的字符串。代码: 根据开发者文档,您只需使用edittextpreference.getText().toString() 我不确定您的错误在哪里,所以我只提供执行此操作的代码 SharedPreferences sharedPreferences = PreferenceManager .getDefau
根据开发者文档,您只需使用
edittextpreference.getText().toString()
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(getBaseContext();
String string = sharedPreferences
.getString("key", "default");
根据我的喜好
<EditTextPreference
android:defaultValue="default"
android:key="key"
android:summary="I'm a summary"
android:title="I'm a title" />
这个代码有效。如果您的应用程序仍然崩溃,那么您的问题可能是onClick事件或其他问题。我个人更喜欢按钮的onClickListeners
以下是OnClick侦听器的代码
Button button = (Button)
findViewById(R.id.button);
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
//Do some awesome stuff
}
});
编辑:约翰在我之前发布了他的答案,他的答案反映了大多数用例,比如在标准的活动中。我的回答只针对首选项活动的使用
以下是如何在首选项活动
中添加首选项
,并根据另一个首选项
设置默认值。对不起,如果有任何错误,我正在打电话
您的XML
定义的首选项将自动将其值保存到SharedReferences,但创建的代码首选项
将需要手动保存/持久化
PreferenceActivity
的onConfigurationChange()
通常保存代码创建的首选项的状态(嵌套的首选项屏幕有点奇怪。)
当然,您还需要执行空检查(省略以保存我的拇指)
活动\u main.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="Preferences"
android:key="root">
<EditTextPreference android:title="Default Pref Text"
android:key="ime"
android:summary="ime pjesme"
/>
<Preference android:title="Click to add a preference."
android:key="add"
android:summary=""
/>
</PreferenceScreen>
setText(preferences.getString(“ime”、“某物”);使我的应用程序崩溃。。javal.ang.nullpointerExceptionary您确定可以将两个字符串放入setText()方法中吗?如果只在preferences.getString中放入一个,会发生什么情况?getString需要字符串键和字符串定义值。。getstring(字符串键,字符串值);我得到java.lang.NullPointerException错误,这个错误是11-16 22:51:56.209:E/AndroidRuntime(14703):java.lang.IllegalStateException:无法执行ActivitySharedReferences.getString(“ime”,“default”)的方法;始终获取字符串“default”这段代码(SharedReferences.getString(“ime”,“default”);)的作用是在共享首选项中查找名为“ime”的键。如果找不到匹配项,则在本例中使用名为“default”的默认测试。将名称“default”更改为“test”。如果您的值这次出现“test”,那么您的问题是保存首选项而不是检索它。
EditText editText = (EditText)
findViewById(R.id.editText);
editText.setText(String.valueOf(string));
Button button = (Button)
findViewById(R.id.button);
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
//Do some awesome stuff
}
});
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="Preferences"
android:key="root">
<EditTextPreference android:title="Default Pref Text"
android:key="ime"
android:summary="ime pjesme"
/>
<Preference android:title="Click to add a preference."
android:key="add"
android:summary=""
/>
</PreferenceScreen>
public class MyActivity extends PreferenceActivity {
public void onCreate(Bundle inState) {
super.onCreate(inState);
setContentView(R.layout.activity_main);
getPreferenceScreen.findPreference(PREFERENCE_BUTTON).
setOnPreferenceClickListener(new OnNewPrefClickListener());
}
private class OnNewPrefClickListener implements OnPreferenceClickListener {
public boolean onPreferenceClick(Preference preference) {
PreferenceScreen rootScreen = getPreferenceScreen();
EditTextPreference defaultPref =
(EditTextPreference)rootScreen.findPreference("ime");
String defaultText = defaultPref.getText();
EditTextPreference newPref = new EditTextPreference(getApplicationContext());
newPref.setText(defaultText);
rootScreen.addPreference(newPref);
return true;
}
}
}