2011-09-27 85 views
0

我试图为EditTextPreference项目的setText不工作的EditTextPreference

设定值与hostPreference.setText("Not yet set");

但文本没有显示

enter image description here

我想表明它像Use Name这里

enter image description here

public class HostSettingActivity extends PreferenceActivity { 

    private final String MY_DEBUG_TAG = "SettingActivity"; 
    SharedPreferences sharedPrefs; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     Log.i(MY_DEBUG_TAG, "HostSettingActivity Started"); 
     super.onCreate(savedInstanceState); 
     sharedPrefs = getPreferenceManager().getSharedPreferences(); 
     setPreferenceScreen(createPreferenceHierarchy()); 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     Log.e(MY_DEBUG_TAG, "On Destroy"); 
    } 

    private PreferenceScreen createPreferenceHierarchy() { 

     // Root 
     PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this); 

     PreferenceCategory dialogBasedPrefCat = new PreferenceCategory(this); 
     dialogBasedPrefCat.setTitle("Host Settings"); 
     root.addPreference(dialogBasedPrefCat); 

     EditTextPreference hostPreference = new EditTextPreference(this); 
     hostPreference.setKey("host"); 
     hostPreference.setDialogTitle("Host"); 
     hostPreference.setText("Not yet set"); 
     hostPreference.setDefaultValue("http://example.com"); 
     hostPreference.setSummary("Set host"); 
     dialogBasedPrefCat.addPreference(hostPreference); 

     EditTextPreference portPreference = new EditTextPreference(this); 
     portPreference.setKey("port"); 
     portPreference.setDialogTitle("Port"); 
     portPreference.setDefaultValue("8080"); 
     portPreference.setSummary("Set port"); 
     dialogBasedPrefCat.addPreference(portPreference); 

     hostPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 
      @Override 
      public boolean onPreferenceChange(Preference preference, Object newValue) { 
       EditTextPreference etp = (EditTextPreference) preference; 

       String newHostValue = newValue.toString(); 
       Log.i(MY_DEBUG_TAG, "New Host: "+newHostValue); 
       etp.setText(newHostValue); 
       return true; 
      } 
     }); 
     return root; 
    } 

} 
+0

你的意思是'“尚未设置”当你点击'设置host'偏好'没有出现? 'setText'应该在哪里生效,你期望得到什么结果? – Knickedi

+0

设置默认值是否解决问题? – nixan

+0

@Knickedi我希望'还没有设置'就像'用户名'一样来到这里http://www.cre8ive.kr/blog/wp-content/uploads/android_prefs_3.jpg –

回答

3

在EditTextPreference中看不到文字,但可以进行编辑。

看到的是TITLE,它由setTitle设置。

如果要在标题中显示编辑后的文本,则必须自己将其设置为标题。