[英]Restore spinner position in Fragment, after screen rotation
正如我在標題中寫的標題一樣,我想在屏幕旋轉后恢復微調器中的選定位置。 嘗試通過將位置保存在包中來完成此操作,並在旋轉后從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)
和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.