Hol*_*lly 2 java android preferences classcastexception preferenceactivity
我正在创建一个Android应用程序,我正在尝试使用PreferenceActivity.
当它到达这一行时,我收到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);
}
Run Code Online (Sandbox Code Playgroud)
这里是我尝试使用另一个类中的首选项的代码:
public float alterForFrequency(Context keypadContext, float enteredAmount, String spinnerPosition){
int termLength = UserPrefs.getTermLength(keypadContext);
int yearLength = UserPrefs.getYearLength(keypadContext);
}
Run Code Online (Sandbox Code Playgroud)
完整的android logcat,我上传到这里:http://freetexthost.com/v3t4ta3wbi
你有一个存储为a的首选项,String你试图将其作为一个int,因此ClassCastException.
如果您乐意将首选项保存为字符串,则可以使用getString并传递该值Integer.parseInt()以获取int.
否则,您需要确保将值作为int写入首选项.
| 归档时间: |
|
| 查看次数: |
2119 次 |
| 最近记录: |