アンドロイドの設定作業を使用しようとしていましたが、すべて設定しましたが、実際にユーザーの設定を取得するのに問題があります。具体的には、長さと年の長さという2つのedittextプリファレンスがあり、intの値を取得したいので、別のアクティビティの計算で使用できます。私はアンドロイドの使い方を理解できませんPreferenceActivity
私が見つけたすべての例は異なっており、私は本当に明確な説明を見つけることができません。私はクラスと私が下で使用しているメソッドを投稿しますが、私はそこに正しいコードがあることを知っていますが、私は今どのような方法でそれを把握し、それを把握することはできませんでした。このラインは、特に私が正しいと信じていない:SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
と私は本当に全体として嗜好活動を理解していない、彼らは私が期待するように動作していないようです。アドバイスは本当に素晴らしいでしょう!私は数日間、同じコード行をじっくりと弄ってきました。
ありがとうございます。
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());
}
}
と私は、この方法では、ユーザーtermLengthと、(int型など)yearLengthを取得することができるようにしたい:
私の好みの活動は、このようになります
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;
}
私は実際によFiscalFrequencyのインスタンスを作成して、キーパッドと呼ばれるアクティビティでalterForFrequencyを使用するようにします。
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;
}
}
prefから環境設定を読み込んだ後に発生する問題またはエラーは何ですか? – Janusz
@Janusz:上で設定したコードで、 'SharedPreferences Prefs = ..'行にこのエラーが表示されます。型PreferenceManagerのgetDefaultSharedPreferences(Context)メソッドは、引数(FiscalFrequency)には適用されません。何らかの理由でxml editTextキーを取得するgetStringメソッドも定義されていません。私はUserPrefsにすべてを入れて、変数へのアクセスのために他のクラスを拡張してNumberFormatExceptionを取得すると、 – Holly
私はこれを新しくし、通常はブレークポイントを使ってこの問題を解決しようとしますが、私はちょうどすべてを再配置する人が必要だと思うが、それはより複雑かもしれないので、助けに感謝する – Holly