gpt4 book ai didi

java - 从共享首选项中记住上一个数组

转载 作者:行者123 更新时间:2023-11-30 00:13:10 25 4
gpt4 key购买 nike

只是一个关于 sharedPreferences 和 int 数组的快速问题。这是我的一些代码(相关位)。我想要发生的是,如果用户做了某事(因为它不相关而保持模糊),那么数组会在该位置保留一个 2。取而代之的是,如果每次我关闭应用程序或更改 Activity 时,数组都会恢复为所有没有二的数组。这可能是一个微不足道的问题,如果是的话,我们深表歉意。

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

}

最佳答案

每次您打开该应用程序时,您的 list 变量都会被初始化为全部。您需要将共享首选项中的列表加载到您的 list 变量中,而不是加载到 isCorrect 数组中,因为这是您在更新共享中存储的列表时获取值的地方点击按钮即可获得偏好。

或者在 onCreate 中做:

list = isCorrect;

我认为它应该有效。

关于java - 从共享首选项中记住上一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47813786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com