Frage

Ich erstelle eine Android -Anwendung und versuche, eine Vorliebenschaftsfähigkeit zu nutzen.

Ich bekomme das java.lang.classcastexception: java.lang.string Fehler, wenn es in diese Zeile geht return PreferenceManager.getDefaultSharedPreferences(context).getInt(USER_TERM, USER_TERM_DEF);

Ich dachte, es könnte daran liegen, dass ich es im EditText -Feld nicht richtig von seinem String -Wert in das int verwande, das ich brauche, aber ich kann nicht herausfinden, wie ich dies beheben kann, oder ist das auch die Ursache? Ich bin flummox.

Hier ist meine Präferenzaktivitätsklasse:

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);
}

Und hier ist der Stück Code, in dem ich versuche, die Einstellungen in einer anderen Klasse zu verwenden:

public float alterForFrequency(Context keypadContext, float enteredAmount, String spinnerPosition){

    int termLength = UserPrefs.getTermLength(keypadContext);
    int yearLength = UserPrefs.getYearLength(keypadContext);
}

Die vollständige Android -Logcat, die ich hier hochgeladen habe: http://freetexthost.com/v3t4ta3wbi

War es hilfreich?

Lösung

Sie haben eine Präferenz, die als speichert wird String und Sie versuchen es als int, daher die ClassCastException.

Wenn Sie gerne die als Zeichenfolge gespeicherte Präferenz verlassen, können Sie einfach verwenden getString und diesen Wert an übergeben Integer.parseInt() um ein zu bekommen int.

Andernfalls müssen Sie sicherstellen, dass der Wert als int in die Einstellungen geschrieben wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top