J'ai essayé d'utiliser une activité de préférence android, j'ai tout mis en place, mais j'ai du mal à récupérer la préférence des utilisateurs. Pour être précis, c'est deux préférences d'édition, la durée du terme et la durée de l'année, que je veux récupérer les valeurs de int pour que je puisse les utiliser dans un calcul dans une autre activité.Je ne peux pas comprendre comment utiliser un android PréférenceActivité
Chaque exemple que je trouve est différent et je ne peux pas vraiment trouver une explication claire. Je vais poster la classe et la méthode que j'utilise ci-dessous, je sais que le code qui est là n'est pas correct mais j'ai l'impression d'avoir tout chamboulé de toutes mes manières maintenant et je n'arrive pas à le comprendre. Cette ligne en particulier je ne crois pas est correcte: SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
et je ne comprends pas vraiment les activités de préférences dans leur ensemble, ils ne semblent pas fonctionner comme je l'attendrais. Tout conseil serait vraiment génial! J'ai jonglé avec les mêmes lignes de code pendant des jours.
Merci.
Mon activité de préférences ressemble à ceci:
package com.geistware.studentbudgetapp;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.text.method.DigitsKeyListener;
import android.util.Log;
public class UserPrefs extends PreferenceActivity {
public int termLength = 1;
public int yearLength = 1;
@Override //OnCreate never runs, why?
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.setup);
EditTextPreference usersTermLength =(EditTextPreference)
findPreference(getString(R.string.term_length_set)); //finds
//the edittext box by its key, term_length_set
usersTermLength.getEditText().setKeyListener(DigitsKeyListener.
getInstance()); //DigitsKeyListener only allows digits to be typed in
Log.v("UserPrefs", "UsersTermLength: " + usersTermLength);
EditTextPreference usersYearLength =(EditTextPreference)
findPreference(getString(R.string.year_length_set));
usersYearLength.getEditText().setKeyListener(DigitsKeyListener.
getInstance());
}
}
et je veux être en mesure de récupérer les utilisateurs termLength et yearLength (comme ints) dans cette méthode:
public float alterForFrequency(float enteredAmount, String spinnerPosition){
//get user preferences (not working)
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String termKey = getString(R.string.term_length_set, "");
String yearKey = getString(R.string.year_length_set, "");
int termLength = prefs.getInt(termKey, 1);
int yearLength = prefs.getInt(yearKey, 1);
Log.v("alterForFrequency", "userprefs: " + termLength + yearLength);
//perform calculations for monthly/temly/yearly
if(spinnerPosition.equals("Monthly")){
usersAmount = ((enteredAmount/31)* 7);
Log.v("FiscFreq", "revisingAmount=" + usersAmount);
}
else if(spinnerPosition.equals("Termly")){
usersAmount = (enteredAmount/termLength);
Log.v("FiscFreq", "revisingAmount=" + usersAmount);
}
else if(spinnerPosition.equals("Yearly")){
usersAmount = (enteredAmount/yearLength);
}
else{
usersAmount = enteredAmount;
}
currencyRevisedAmount = toCurrency(usersAmount); //drops the unwanted digits
return currencyRevisedAmount;
}
Je suis en fait créer une instance de FiscalFrequency pour utiliser alterForFrequency dans une activité appelée Keypad comme suit:
public class Keypad extends Activity { .....
public float reviseOnSpinnerPos(){
enteredAmount = Float.valueOf(userAmount.getText().toString());
FiscalFrequency ff = new FiscalFrequency();
revisedAmount = ff.alterForFrequency(enteredAmount, spinnerPosition);
return revisedAmount;
}
}
Quel est le problème ou l'erreur qui se produit après avoir lu les préférences de pref? – Janusz
@Janusz: bien avec le code mis en place ci-dessus j'obtiens cette erreur sur la ligne 'SharedPreferences Prefs = ..': La méthode getDefaultSharedPreferences (Context) dans le type PreferenceManager n'est pas applicable pour les arguments (FiscalFrequency). aussi la méthode getString, pour obtenir les clés xml editText, n'est pas définie pour une raison quelconque. Si je mélange des choses à propos de (en mettant tout dans UserPrefs et en demandant à mes autres classes de l'étendre pour accéder aux variables, j'obtiens une exception NumberFormatException.) – Holly
Je suis novice dans ce domaine et normalement j'essayerais de résoudre cela en utilisant des points de rupture. ne semble pas vraiment courir les préférences sur créer du code je suis à une perte.Je pense que j'ai juste besoin de quelqu'un pour tout réorganiser correctement, mais il pourrait être plus compliqué, donc j'apprécie l'aide – Holly