android - 微调器在 Android 中的 onActivityResult() 之后重置

标签 android android-spinner

我有一个带有一堆状态名称的 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/

相关文章:

android - 更改 Activity 中的背景颜色。

java - 我有一个错误 : setOnItemClickListener cannot be used with a spinner, 怎么了?

安卓 1.6 : "android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application"

android - 为 Android 创建你自己的依赖

android - 为什么我在 android 中需要 ViewModelFactory?

android - Spinner onItemSelected 项目已被选中

java - Spinner 给出的资源 ID 无效

java - Android ICS 4.0 更新破坏纺车动画

java - 在 Spinner 小部件中设置所选项目

java.io.IOException : Prepare failed.:状态=0x1