на Activity создано восстановление восстанавливающих объектов - PullRequest
0 голосов
/ 29 ноября 2018

Поскольку фрагменты не имеют состояния onRestore, я пытаюсь восстановить объекты счетчика после перезапуска приложения.Итак, как я могу реализовать приведенный ниже код для восстановления выбранных элементов из счетчика?

 @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);


        if (savedInstanceState != null) {

            spinnerItem = savedInstanceState
        }


    }

1 Ответ

0 голосов
/ 30 ноября 2018

Может быть, это может помочь, предыдущий комментарий должен быть удален, поэтому я разместил новый комментарий с другим ответом

public class MyFragment extends Fragment{

private String[] choices = new String[]{"one", "two", "three"};

// Initial position
private int spinnerPosition = 0;

private static final String SPINNER_ITEM_POSITION = "whatever_label_fits_you";

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState)
{
    View view = inflater.inflate(R.layout.my_fragment, container, false);
    // This part is here to simulate a real Spinner since your example didn't include one
    final AppCompatSpinner spinner = view.findViewById(R.id.spinner);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_item, choices);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l)
        {
            spinnerPosition = i;
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

    if (savedInstanceState != null)
        spinnerPosition = savedInstanceState.getInt(SPINNER_ITEM_POSITION);

    spinner.setSelection(spinnerPosition);
    return view;
}

@Override
public void onSaveInstanceState(@NonNull Bundle outState)
{
    // Save current position to bundle so you can retrieve it in onCreateView
    outState.putInt(SPINNER_ITEM_POSITION, spinnerPosition);
    super.onSaveInstanceState(outState);
}}

Если это не помогло, вы всегда можете проверить Один раз для всехКак правильно сохранить состояние экземпляра фрагментов в заднем стеке? , который отвечает на вопрос о том, как сохранить экземпляр во фрагментах.Чтобы это работало в вашей Деятельности, просто убедитесь, что вы создаете Фрагмент только в том случае, если для параметра saveInstanceState в методе onCreate задано значение NULL, поскольку в противном случае вы потеряете все сохраненные данные, поскольку вы всегда создаете новый фрагмент.

...