使用SharedPreferences存储Spinner状态
在onItemSelected方法中,我们可以使用SharedPreferences存储Spinner的最后一个状态。以下是示例代码:
首先,在onCreate方法中,初始化SharedPreferences:
SharedPreferences sharedPreferences = getSharedPreferences("MyData", Context.MODE_PRIVATE);
然后,读取Spinner的最后一个状态:
int spinnerValue = sharedPreferences.getInt("SpinnerValue", 0); // 默认值为0
接下来,在onItemSelected方法中,存储Spinner的最后一个状态:
@Override public void onItemSelected(AdapterView> parent, View view, int position, long id) { String selectedItem = parent.getItemAtPosition(position).toString();
// 存储Spinner的最后一个状态
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("SpinnerValue", position);
editor.apply();
Toast.makeText(getApplicationContext(), "Selected: " + selectedItem, Toast.LENGTH_SHORT).show();
}
这样,每次用户选择Spinner的选项时,都会将其最后一个状态存储在SharedPreferences中。然后,在下次应用程序加载时,我们可以再次读取SharedPreferences的内容,以恢复Spinner的最后一个状态。
可以在onCreate方法中使用以下代码,以恢复Spinner的最后一个状态:
Spinner spinner = (Spinner) findViewById(R.id.spinner); spinner.setSelection(spinnerValue);
注意:要使用正确的SharedPreferences名称和键名。在这个示例中,SharedPreferences名称为'MyData”,键值为'SpinnerValue”。您可以自由修改这些名称,只要它们在上下文中是唯一的即可。
完整代码示例:
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
Spinner spinner;
SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化SharedPreferences
sharedPreferences = getSharedPreferences("MyData", Context.MODE_PRIVATE);
// 读取Spinner的最后一个状态
int spinnerValue = sharedPreferences.getInt("SpinnerValue", 0);
// 加载Spinner的选项
spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter adapter = ArrayAdapter.createFromResource(this,
R.array.planets_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setSelection(spinnerValue);
// 设置监听器
spinner.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView> parent, View view, int position, long id) {
String selectedItem = parent.getItemAtPosition(position).toString();
// 存储Spinner的最后一个