なぜここでClassCastExceptionを取得しているのですか?
-
27-10-2019 - |
質問
私はAndroidアプリケーションを作成していますが、優先順位を使用しようとしています。
私は取得しています java.lang.classcastexception:java.lang.string この行に到達したときのエラー return PreferenceManager.getDefaultSharedPreferences(context).getInt(USER_TERM, USER_TERM_DEF);
edittextボックスの文字列値から必要なintに適切に変換していないのかもしれないが、これを修正する方法を見つけられないのか、それとも原因でさえあるのかと思ったのでしょうか?私はflummoxedです。
これが私の好みのアクティビティクラスです:
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ログキャット、ここにアップロードしました: http://freetexthost.com/v3t4ta3wbi
解決
aとして保存される好みがあります String
そして、あなたはそれをとして読もうとしています int
, 、 従って ClassCastException
.
弦として保存されている優先権を残して喜んでいる場合は、使用することができます getString
そしてその価値を渡します Integer.parseInt()
を取得する int
.
それ以外の場合は、値がINTとして設定に書き込まれることを確認する必要があります。
所属していません StackOverflow