簡體   English   中英

屏幕旋轉后,在Fragment中恢復微調器位置

[英]Restore spinner position in Fragment, after screen rotation

正如我在標題中寫的標題一樣,我想在屏幕旋轉后恢復微調器中的選定位置。 嘗試通過將位置保存在包中來完成此操作,並在旋轉后從savedInstanceState獲取位置

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

要么

onViewCreated(View view, Bundle savedInstanceState)

要么

onActivityCreated(Bundle savedInstanceState) 

但沒有人起作用:-/

AddRecipeFragment

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)false

如果所有這些都失敗了,為什么不使用靜態變量呢?

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM