2011-08-11 122 views
1

我有這樣的代碼來設置EditTextPreference當我在一個菜單項挖掘:EditTextPreference不能設置

case R.id.prochain_vidange: 

     settings = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
     km = settings.getString("km", ""); 
     Log.d("TAG",km); 
     int x= Integer.valueOf(km); 
     int y= x+8000; 
     String z=String.valueOf(y); 

     SharedPreferences.Editor editor1 = settings.edit(); 
     Log.d("proch1",z); 
     editor1.putString("prochain_vidange",z); 
     Log.d("proch2",z); 
     editor1.commit(); 


     return true; 

我真的不知道爲什麼,當我在菜單項上沒有任何反應挖掘,計算值(y轉換爲字符串z)不能設置爲「km」EditTextPreference。 (我之前在另一個菜單項中使用過的設置和公里值。) 這段代碼是怎麼回事? 非常感謝。 編輯:

08-11 21:32:16.006: DEBUG/TAG(2394): 4000 
08-11 21:32:16.016: DEBUG/proch1(2394): 12000 
08-11 21:32:16.016: DEBUG/proch2(2394): 12000 
+1

你真的應該檢查你的logcat的。問題是 - km不在SharedPrefs中,因此它返回「」,並且不能將其解析爲int。所以你的LogCat應該說'NumberFormatException' – Blundell

+0

@Blundell:km正在返回正確的值!我注意到有時候,價值展現在「prochain_vidange」中是正確的,有時候不是。也許變量分配:\ – androniennn

+0

添加Log.i這樣的行(「SomeTag」,「km是:」+ km);通過你的代碼,你可以檢查你正在使用LogCat – Blundell

回答

4
EditTextPreference myEditTextPreference = (EditTextPreference) findPreference("prochain_vidange"); 
myEditTextPreference.setText(z);