Как сохранить последний фрагмент? - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть три фрагмента, и у меня есть две кнопки на основной Деятельности b1, называемая следующей кнопкой, и b2, вызываемая предыдущей кнопкой, когда приложение запускает его, покажите мне пустой фрагмент, когда нажмите на b1, покажите мне XFragment, называемый страницей 1, когда нажмите на b1, чтобы он показал мне YFragment, называемый страницей 2, я хочу, чтобы при повторном открытии приложения показывался последний фрагмент, который был открыт, я знаю, что следует использовать shareprefferences, но я не знаю, как добавить его к этому коду

public class MainActivity extends AppCompatActivity  {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    public void b1(View view) {

        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        XFragment fragment = new XFragment();
        ft.replace(R.id.mainfragment,fragment);
        ft.commit();
    }

    public void b2(View view) {

        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        YFragment fragment = new YFragment();
        ft.replace(R.id.mainfragment,fragment);
        ft.commit();
    }
}

1 Ответ

0 голосов
/ 14 апреля 2020

Ниже приведен необходимый код с использованием SharedPreference.

public class MainActivity extends AppCompatActivity  {

        SharedPreference pref;
        Editor editor;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            pref = getApplicationContext().getSharedPreferences("MyPref", 0);
            editor = pref.edit();
            int fragment_number=pref.getInt("fragment_number", -1); // getting Integer
            if(int==1){
            //start first fragment
            }
           if(int==2){
            //start second fragment
           }
        }

        public void b1(View view) {
            editor.putInt("fragment_number", 1); 
            editor.apply();
            FragmentManager fm = getSupportFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();
            XFragment fragment = new XFragment();
            ft.replace(R.id.mainfragment,fragment);
            ft.commit();
        }

        public void b2(View view) {

            editor.putInt("fragment_number", 2); 
            editor.apply();
            FragmentManager fm = getSupportFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();
            YFragment fragment = new YFragment();
            ft.replace(R.id.mainfragment,fragment);
            ft.commit();
        }
    }
...