私はアンドロイドアプリケーションを作成しており、私はPreferenceActivityを使用しようとしています。ここでClassCastExceptionが発生するのはなぜですか?
私はjava.lang.ClassCastExceptionが取得しています:それは、このラインにreturn PreferenceManager.getDefaultSharedPreferences(context).getInt(USER_TERM, USER_TERM_DEF);
を取得したときに、私はそれの文字列からそれを正しく変換していないよので、私はそれがかもしれないと思ったjava.lang.Stringでエラーを私が必要とするintへのEditTextボックスの値が、私はこれを解決する方法を見つけることができない、またはそれも原因ですか?私はうんざりしている。
ここに私の好みのアクティビティクラスです:
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);
}
完全アンドロイドlogcat、私はここにアップロードされました:http://freetexthost.com/v3t4ta3wbi
完全なスタックトレースを投稿できますか? 'PreferenceManager.getDefaultSharedPreferences(context)'の戻り時間は何秒ですか? 'getInt()'メソッドのシグニチャとは何ですか? – PaoloVictor
@ Hunter2、Damn。申し訳ありませんが、私はプログラミングに慣れていないし、恥ずかしいことに、これらの質問に答えることはできません。しかし、私はアンドロイドlogcatの内容を投稿することができます(もし私が持っている)、それが役立つ場合は、あなたが私にそれを行う日食でstacktraceを取得する方法を教えてくれるほど親切であれば。とにかくありがとう。 – Holly
@ Hunter2は、 'ClassCastException'のスタックトレースを意味しています。 try/catchを削除してlogcatを投稿することができます。とにかく 'getInt(String、int)'なので、正しいはずです。 – bigstones