gpt4 book ai didi

java - 为什么我在这里得到一个 ClassCastException?

转载 作者:太空狗 更新时间:2023-10-29 15:49:21 24 4
gpt4 key购买 nike

我正在创建一个 Android 应用程序,我正在尝试使用 PreferenceActivity。

当它到达此行时,我收到了 java.lang.ClassCastException: java.lang.String 错误 return PreferenceManager.getDefaultSharedPreferences(context).getInt(USER_TERM, USER_TERM_DEF) ;

我认为这可能是因为我没有将它从 EditText 框中的字符串值正确转换为我需要的 int,但我不知道如何解决这个问题,或者这甚至是原因?我很困惑。

这是我喜欢的 Activity 类(class):

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,我已经上传到这里:http://freetexthost.com/v3t4ta3wbi

最佳答案

您有一个存储为 String 的首选项,并且您试图将其作为 int 读入,因此出现了 ClassCastException

如果您愿意将首选项存储为字符串,您可以只使用 getString 并将该值传递给 Integer.parseInt() 以获取 int

否则,您需要确保将值作为 int 写入首选项。

关于java - 为什么我在这里得到一个 ClassCastException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4837489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com