【问题标题】:Keep spinner position when screen orientation is changed更改屏幕方向时保持微调器位置
【发布时间】:2016-01-27 16:59:23
【问题描述】:

我想在屏幕旋转时保持微调器位置

我在这里查看了一些答案,到目前为止有以下答案

Aim - 存储微调器的位置

protected void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    flav1Spinner = (Spinner)findViewById(R.id.Combo_InvChoice1);
    Integer flav1 = flav1Spinner.getSelectedItemPosition();
    savedInstanceState.putInt("cho1", flav1);
}

瞄准 - 恢复位置

 protected void onCreate(Bundle savedInstanceState)
 {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_calculation);
    Locale.setDefault(Locale.US);
   if (savedInstanceState != null){
        flav1Spinner = (Spinner)findViewById(R.id.Combo_InvChoice1);
        Integer flav1 = savedInstanceState.getInt("cho1");
        flav1Spinner.setSelection(flav1);
    }

但是,在调试时,我可以看到 Integer Flav1 正在获取分配给它的值并且正在检索数字,但是微调器没有改变它的位置。有什么建议吗?

【问题讨论】:

  • 你有微调器的适配器吗?
  • 你应该在 setSelection() 之前 setAdapter()。
  • @Blackbelt 在某个时候有一个,因为微调器正在从数据库中的值中填充
  • 你可能想在setAdapter之后打电话给setSelection
  • 谢谢,但我还要设置适配器吗?

标签: android spinner


【解决方案1】:

你可以通过onSaveInstanceState()来做,如下

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("yourSpinner", yourSpinner.getSelectedItemPosition());
    // do this for each of your Spinner

}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (savedInstanceState != null) {
        yourSpinner.setSelection(savedInstanceState.getInt("yourSpinner", 0));
        // do this for every text views
    }
}

查看Saving Activity state,它将帮助您获得更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多