gpt4 book ai didi

android - 这里如何使用sharedPreferences?

转载 作者:行者123 更新时间:2023-11-30 03:43:09 25 4
gpt4 key购买 nike

我有一些微调器,我可以在其中设置值,其中有四个。我希望他们在两次启动之间保留当前设置。当您在微调器中选择一个值时,它不应保存该值,直到按下 updateSettings 按钮。我该怎么做?

这是一些代码,在 onCreate 中我使用默认值制作微调器:

    mBaudSpinner = (Spinner) findViewById(R.id.bannerBaudSpinner);
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(
this, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mBaudSpinner.setAdapter(adapter);
String[] tempArray = SlickUSB2Serial.BAUD_RATES;
for (int i = 0; i < tempArray.length; i++) {
adapter.add(tempArray[i]);
}
mBaudSpinner.setSelection(SlickUSB2Serial.BaudRate.BAUD_9600.ordinal());


mDataSpinner = (Spinner) findViewById(R.id.bannerDataSpinner);
adapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mDataSpinner.setAdapter(adapter);
tempArray = SlickUSB2Serial.DATA_BITS;
for (int i = 0; i < tempArray.length; i++) {
adapter.add(tempArray[i]);

}
mDataSpinner
.setSelection(SlickUSB2Serial.DataBits.DATA_8_BIT.ordinal());

mParitySpinner = (Spinner) findViewById(R.id.bannerParitySpinner);
adapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mParitySpinner.setAdapter(adapter);
tempArray = SlickUSB2Serial.PARITY_OPTIONS;
for (int i = 0; i < tempArray.length; i++) {
adapter.add(tempArray[i]);

}
mParitySpinner.setSelection(SlickUSB2Serial.ParityOption.PARITY_NONE
.ordinal());

mStopSpinner = (Spinner) findViewById(R.id.bannerStopSpinner);
adapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mStopSpinner.setAdapter(adapter);
tempArray = SlickUSB2Serial.STOP_BITS;
for (int i = 0; i < tempArray.length; i++) {
adapter.add(tempArray[i]);

}
mStopSpinner
.setSelection(SlickUSB2Serial.StopBits.STOP_1_BIT.ordinal());

如果我单击 updateSettings,将运行此代码:

else if (v == mUpdateSettings) {
if (mSelectedAdapter == null) {
return;
}

mSelectedAdapter.setCommSettings(BaudRate.values()[mBaudSpinner
.getSelectedItemPosition()], DataBits.values()[mDataSpinner
.getSelectedItemPosition()],
ParityOption.values()[mParitySpinner
.getSelectedItemPosition()],
StopBits.values()[mStopSpinner.getSelectedItemPosition()]);

}

我正在尝试对一个微调器使用这样的首选项作为示例,它是否在正确的轨道上?

 SharedPreferences prefs;
prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor prefEditor = prefs.edit();
prefEditor.putString("savedValue",mBaudSpinner.getSelectedItem().toString());
prefEditor.commit();
String username = prefs.getString("savedValue", String.valueOf(SlickUSB2Serial.BaudRate.BAUD_9600.ordinal()));
mBaudSpinner.setSelection(Integer.parseInt(username));

你会怎么做,我是否将 sharedPrefs 设置为全局的,以便它可以在 onCreate 和按钮点击监听器中使用?然后将设置微调器默认值的行更改为类似这样的内容作为示例:

String username = prefs.getString("savedValue", String.valueOf(SlickUSB2Serial.BaudRate.BAUD_9600.ordinal()));
mBaudSpinner.setSelection(Integer.parseInt(username));

然后把关于保存值的其他东西放在按钮监听器中?我正在尝试这个,但状态不会保存并且总是默认为错误的值。我的做法对吗?

编辑

这几行好像没有设置正确的默认值,这是为什么呢?

prefs = PreferenceManager.getDefaultSharedPreferences(this);
String username = prefs.getString("savedValue", Integer.toString(SlickUSB2Serial.BaudRate.BAUD_9600.ordinal()));
mBaudSpinner.setSelection(Integer.parseInt(username));

最佳答案

看,当你打电话时:

 mBaudSpinner.getSelectedItem()

你得到一个对象并将其转换为字符串。当你打电话时:

 mBaudSpinner.setSelection(Integer.parseInt(username))

你得到字符串并转换为 int。但是,setSelectionshould 接收一个 int 位置,getSelectedItem 返回一个对象而不是项目位置。

关于android - 这里如何使用sharedPreferences?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15432035/

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