代码之家  ›  专栏  ›  技术社区  ›  RediOne1

屏幕旋转后,恢复片段中的微调器位置

  •  1
  • RediOne1  · 技术社区  · 9 年前

    当我在标题中写下标题时,我希望在屏幕旋转后恢复微调器中选定的位置。尝试通过保存捆绑包中的位置来完成此操作,并从 savedInstanceState 旋入后

    onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { }
    

    onViewCreated(View view, Bundle savedInstanceState)
    

    onActivityCreated(Bundle savedInstanceState) 
    

    但没有人工作:-/

    添加配方片段

    public class AddRecipeFragment extends Fragment implements ObservableScrollViewCallbacks {
    
    
        private static final String SELECTED_CATEGORY = "SELECTED_CATEGORY";
        private Spinner categoriesSpinner;
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            return inflater.inflate(R.layout.fragment_add_recipe, container, false);
        }
    
        @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);
    
            categoriesSpinner = (Spinner) view.findViewById(R.id.categories_spinner);
            ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity(), R.array.categories, android.R.layout.simple_spinner_item);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            categoriesSpinner.setAdapter(adapter);
    
            if (savedInstanceState != null) {
                categoriesSpinner.setSelection(savedInstanceState.getInt(SELECTED_CATEGORY, 0), true);
            }
        }
    
        @Override
        public void onSaveInstanceState(Bundle outState) {
            super.onSaveInstanceState(outState);
            outState.putInt(SELECTED_CATEGORY, categoriesSpinner.getSelectedItemPosition());
        }
    }
    

    我也尝试过 setSelection(position, false) 具有 假的 .

    1 回复  |  直到 9 年前
        1
  •  0
  •   SaNtoRiaN    9 年前

    如果所有这些都失败了,为什么不使用静态变量?!

    private static int selectedPosition = 0;
    

    选择微调器项时

    categoriesSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            selectedPosition = position;
        }
    
        @Override
        public void onNothingSelected(AdapterView<?> parent) {
        }
    });
    

    和里面 onViewCreated() 方法

    categoriesSpinner.setSelection(selectedPosition);