我有一个带有一堆状态名称的 Spinner。在 onCreate()
中,我将其设置为默认值。 Spinner 数组中的索引 0 是“Alabama”
String state = "California"; //preset to this
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_state_and_drivers_license);
statesSpinner = (Spinner)findViewById(R.id.states_spinner);
adapter = (ArrayAdapter<String>)statesSpinner.getAdapter();
statesSpinner.setSelection(adapter.getPosition(state));
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, RESULT_CAMERA);
}
但是,在 onResult 之后,Spinner 再次设置为“Alabama”。这意味着它恢复到数组的索引 0,即使我认为它应该保留其现有的选定值。
编辑:我将 setSelection(position) 放入 onCreate、onResume 和 onDestroy。尽管如此,当我从相机 Intent 中返回时,微调器仍会重置并且不会进入我的选择。
最佳答案
调用 Camera Activity 可能不会保存您的状态,本质上是调用 onDestroy。我不确定。这个其他question ,它也处理相机 Intent 有类似的问题。我会在 onDestroy 中添加一个日志,并在调用相机 Activity 时检查它是否被调用。这个其他question也有点道理,因为通常在调用新 Activity 时您的状态应该保持不变。
经过一些快速研究,似乎由于方向改变和可能的内存问题,您的状态无法保存。您也可以按照其他答案的说明进行操作,因为它是预设的,确保它始终在 onResume
上将是一个简单的解决方法。
关于android - 微调器在 Android 中的 onActivityResult() 之后重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17620035/