我正在創建一個android應用程序,我試圖使用PreferenceActivity。爲什麼我在這裏得到一個ClassCastException?
,我發現了java.lang.ClassCastException:java.lang.String中錯誤當它到達此行return PreferenceManager.getDefaultSharedPreferences(context).getInt(USER_TERM, USER_TERM_DEF);
我想這可能是因爲我沒有正確地將它從它的串值在EditText框中的int我需要但我無法弄清楚如何解決這個問題,或者甚至是原因?我迷失了方向。
我更喜歡這個活動類:
public class UserPrefs extends PreferenceActivity {
//option names and default vals
private static final String USER_TERM = "term_length";
private static final String USER_YEAR = "year_length";
private static final int USER_TERM_DEF = 12;
private static final int USER_YEAR_DEF = 34;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
public static int getTermLength(Context context){
try{
return PreferenceManager.getDefaultSharedPreferences(context).getInt(USER_TERM, USER_TERM_DEF);
}catch (ClassCastException e){Log.v("getTermLength", "error::: " + e); }
//return 1;//temporary, needed to catch the error and couldn't without adding a return outside the block.//
}
public static int getYearLength(Context context){
return PreferenceManager.getDefaultSharedPreferences(context).getInt(USER_YEAR, USER_YEAR_DEF);
}
這裏的地方我試圖使用另一個類裏面的喜好的碼位:
public float alterForFrequency(Context keypadContext, float enteredAmount, String spinnerPosition){
int termLength = UserPrefs.getTermLength(keypadContext);
int yearLength = UserPrefs.getYearLength(keypadContext);
}
完整的Android logcat的,我've uploaded here:http://freetexthost.com/v3t4ta3wbi
你能發佈完整的堆棧跟蹤嗎? 'PreferenceManager.getDefaultSharedPreferences(context)'的返回時間是多少?什麼是getInt()方法的簽名? – PaoloVictor
@ Hunter2,該死的。抱歉,我是編程新手,無法回答以下任何問題:/。但是如果有幫助,我可以發佈androids logcat的內容(如果有幫助的話),並且如果你願意告訴我如何在eclipse中獲得堆棧跟蹤,我也會這樣做。不管怎麼說,還是要謝謝你。 – Holly
我確定@ Hunter2意味着'ClassCastException'的棧跟蹤。你可以刪除try/catch,然後發佈logcat。無論如何它是'getInt(String,int)',所以這應該是正確的。 – bigstones