2011-09-27 90 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設置。

如果要在標題中顯示編輯後的文本,則必須自己將其設置爲標題。