Как перезаписать данные saveInstaceState к фрагменту из FragmentActivity?

У меня есть ValueView extends LinearLayout для отображения двух значений в TextView. Для простоты я удалил все TextViews, которые работают до сих пор..

public class ValueView extends LinearLayout {

    private int value1;
    private int value2;

    public ValueView(Context context) {
        super(context);
        init(context);
    }

    private void init(Context context) {
        View.inflate(context, R.layout.view_values, this);
        //..
        value1 = 1;
        value2 = 0;
        displayValues(value1, value2);
    }


    public static class MyBottomSheetDialogContainerActivity extends FragmentActivity {
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            MyBottomSheetDialogFragment bsd = new MyBottomSheetDialogFragment();
            bsd.show(getSupportFragmentManager(), bsd.getTag());
        }
    }
}

Тогда у меня также есть MyBottomSheetDialogFragment, как:

public class MyBottomSheetDialogFragment extends BottomSheetDialogFragment {

    private int value1 = 1;
    private int value2 = 0;

    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_my_bottomsheet, container, false);

        if (savedInstanceState != null)
        {
            value1 = savedInstanceState.getInt("VAL1");
            value2 = savedInstanceState.getInt("VAL2");
        }

//        super.onCreateView(inflater, container, savedInstanceState);
        return view;
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        outState.putInt("VAL1", value1);
        outState.putInt("VAL2", value2);
        super.onSaveInstanceState(outState);
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        value1 = 1;
        value2 = 0;
        getActivity().finish();
    }
}

Это работает пока отлично. Единственное, я хочу запомнить значения1 и значение2, когда я снова вызываю MybottomSheetdialogFragment.

Я хотел бы решить это с saveInstanceState, но каждый раз MyBottomSheetDialogFragment входит в onCreateView() метод savedStateInstance является null,

  1. Я не хочу сохранять значения в дополнительных SharedPrefs!
  2. Добавление + id к макету не помогает, все же null
  3. Я реализовал onSaveInstanceState метод, но нет onRestoreInstanceState метод в моем MyBottomSheetDialogFragment, Похожий метод, который я нашел: onViewStateRestored(@Nullable Bundle savedInstanceState)
  4. savedInstanceState это также null в MyBottomSheetDialogContainerActivity::onCreate()

0 ответов

Другие вопросы по тегам