sharedPreferencesとint配列に関する簡単な質問です。これは私のコードの一部です(関連するビット)。私が何をしたいのかは、ユーザーが何かをする(関連性がないために漠然としている)場合、配列はその位置に2を保持します。代わりに何が起こるかは、私がアプリを閉じるかアクティビティを変更するたびに、配列は2つもないすべてのものに戻ります。これは些細な問題かもしれませんが、ごめんなさい。共有の設定から以前の配列を記憶しています
public class SecondActivity extends AppCompatActivity {
int[] list = { 1, 1, 1, 1, 1, 1 };
public void startAQuestion(View view){
checkAnswerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(editText2.getText().toString().equals(mAnswer)) {
list[tappedQuestionmark]=2;
storeIntArray("updateList", list);
Log.i("The array is ", Arrays.toString(list));
}
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
int[] isCorrect = getFromPrefs("updateList");
Log.i("is Correct is ", Arrays.toString(isCorrect));
}
public void storeIntArray(String name, int[] array) {
SharedPreferences.Editor edit = this
.getSharedPreferences("com.example.sid.sharedpreferencedemo", Context.MODE_PRIVATE).edit();
edit.putInt("Count_" + name, array.length).commit();
int count = 0;
for (int i : array) {
edit.putInt("IntValue_" + name + count++, i).commit();
}
edit.commit();
}
public int[] getFromPrefs(String name) {
int[] ret;
SharedPreferences prefs = this.getSharedPreferences("com.example.sid.sharedpreferencedemo",
Context.MODE_PRIVATE);
int count = prefs.getInt("Count_" + name, 0);
ret = new int[count];
for (int i = 0; i < count; i++) {
ret[i] = prefs.getInt("IntValue_" + name + i, i);
}
return ret;
}
}
ありがとうございました!これは動作します! – mathsislife
最後に問題になることはありません。最初から開始するとき、変数isCorrectは[]と等しくなります。だからそこには何もないのでクラッシュする。コードの残りの部分を破棄することなく、これをどのように初期化すればよいでしょうか?ありがとう! – mathsislife
私もあなたの最初の提案をしたときにこれが起こると言わなければなりません。私もリストを静的にしようとしましたが、それはまだ動作しませんでした。どんな助けでも大歓迎です。 – mathsislife