2012-12-27 45 views
0

我正在开发我的第一个android应用程序。 我用向导来创建一个设置活动,到目前为止工作正常。 现在我想以编程方式在输入字段中进行更改:我正在生成一个字符串,我希望在输入字段中默认进行预设。以编程方式更改SettingsActivity小部件的文本

这是我输入字段,这是其在自动生成的pref_general.xml项:

<EditTextPreference 
     android:capitalize="words" 
     android:defaultValue="@string/pref_default_display_name" 
     android:inputType="textCapWords" 
     android:key="example_text" 
     android:maxLines="1" 
     android:selectAllOnFocus="true" 
     android:singleLine="true" 
     android:title="@string/pref_title_display_name" /> 

我的问题是:我如何在我的代码访问此输入字段? 通常我要求UI元素使用

findViewById(R.*.*); 

我认为在这里我可以用

findViewById(R.string.pref_default_display_name); 

但这只是给我空!

+0

您是否创建了名为“pref_title_display_name”的字符串资源? – Eric

+0

R.java中有这样的内容: public static final class string { // ... public static final int pref_title_display_name = 0x7f050007; } – bogus

+0

这个常数对应于我传递给findViewById的参数,但是这个方法仍然给我null – bogus

回答

0

基于你在做什么,你可以用findPreference()得到EditTextPreference对象:

EditTextPreference pref = myPrefGroup.findPreference("example_text"); 

要想从这个View是不容易,而且往往是没有必要的。您可以尝试使用getView(),但这可能会或可能不会返回您想要的。

如果你只是想设置EditTextPreference的输入值,你可以用它setText(),就像使用任何EditText

EditTextPreference pref = myPrefGroup.findPreference("example_text"); 
pref.setText("Foo!"); 

你可以看看还有什么PreferenceEditTextPreference能请在提供的文档中进行操作,但在首选项屏幕中有一些操作无法完成。 (这只是Android的限制。)

+0

谢谢!你在哪里打电话findPreference(...)?什么是myPrefGroup?到目前为止,我只找到不推荐的方法,诀窍可能是做基于片段的 – bogus

+0

它是类型['PreferenceGroup'](http://developer.android.com/reference/android/preference/PreferenceGroup.html)或' PreferenceScreen',它们都有'.findPreference()'方法。 (还要记住,API 10和11之间的偏好设置有所不同,这可能会让这有点奇怪......) – Eric

相关问题