gpt4 book ai didi

android - 微调器选择 - 保存到 SharedPreferences,然后检索

转载 作者:太空宇宙 更新时间:2023-11-03 12:42:37 25 4
gpt4 key购买 nike

我在我的应用程序中使用“SharedPreferences”来保留从多个编辑文本框保存/检索字符串值的能力,这工作得很好。我在我的 Activity 中也有一个 Spinner,带有一个字符串数组,因为它的可用值。但我不清楚如何将微调器选择写入 SharedPreferences,然后稍后阅读 SharedPreferences 以退休并设置它的值(value)。

这是我对编辑文本的配置:

-激活将值保存到 SharedPreferences 的按钮-

public void buttonSaveSendClick(View view) {

SharedPreferences.Editor editor = getPreferences(0).edit();

EditText editTextCallId = (EditText) findViewById(R.id.editTextCallId);
editor.putString("editTextCallIdtext", editTextCallId.getText().toString());
editor.putInt("selection-startCallId", editTextCallId.getSelectionStart());
editor.putInt("selection-endCallId", editTextCallId.getSelectionEnd());
editor.commit();
}

-激活从 SharedPreferences 恢复上次保存的值的按钮-

public void buttonRestoreLastClick(View view) {

SharedPreferences prefs = getPreferences(0);

EditText editTextCallId = (EditText) findViewById(R.id.editTextCallId);
String editTextCallIdtextrestored = prefs.getString("editTextCallIdtext", null);
editTextCallId.setText(editTextCallIdtextrestored, EditText.BufferType.EDITABLE);
int selectionStartCallId = prefs.getInt("selection-startCallId", -1);
int selectionEndCallId = prefs.getInt("selection-endCallId", -1);
editTextCallId.setSelection(selectionStartCallId, selectionEndCallId);
}

关于如何在第一个按钮(保存)中构造微调器选定值的集合的任何建议?那么如何在按下“恢复”按钮时将保存的值返回到微调器 View ?

最佳答案

您必须在所有 editor.put(); 语句之后调用一次 editor.apply();。否则,您对首选项所做的所有更改都将被丢弃。假设您的数组中的项目根本不会改变位置,那么您可以将所选位置作为 int 存储在您的首选项中。

保存:

int selectedPosition = yourSpinner.getSelectedItemPosition();
editor.putInt("spinnerSelection", selectedPosition);
editor.apply();

加载:

yourSpinner.setSelection(prefs.getInt("spinnerSelection",0));

如果数组中的项目要改变,那么你必须存储实际的字符串,而不是位置。这样的事情会起作用:

String selectedString = yourArray[yourSpinner.getSelectedItemPosition()];
editor.putString("spinnerSelection", selectedString);
editor.apply();

通过遍历数组并根据存储在 prefs 中的值检查 array[i] 来找到字符串的位置。然后调用 yourSpinner.setSelected(position)。如果您改用 ArrayList,则可以通过调用

而无需循环来完成此部分

ArrayList.indexOf(prefs.getString("spinnerSelection", ""));

请注意,只有 ArrayList 具有 indexOf(); 方法。在普通数组上,您不能使用 indexOf(); 方法,您必须手动搜索数组以找到正确的值。

关于android - 微调器选择 - 保存到 SharedPreferences,然后检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5068115/

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