Why it does not load pictures, so I will try to describe in words. The application shows a list of movies, three options for sorting in the toolbar. The first and second is the HTTP Request. The third is the display of saved data from SQLite. When you click on a list item, the user falls into a fragment with a detailed description of the selected movie. Now when you click on a cell in the list, data is saved in a bundle and in a fragment with a detailed description this data is retrieved.
There are 1 activites. Fragment 1 - displays a list, the content is displayed based on the query that the user clicked in the query1 toolbar and query2. Fragment 2 - displays a list of data from SQLite. Lists of Fragment 1 and Fragment 2 are visually identical.
By clicking on the item of any of the list, the user falls into fragment 3, where more detailed data of the selected cell is displayed. The Back button works, so the list fragment goes to the backStack.
How to make the user get to the desired fragment when you rotate the screen.
public class MainActivity extends AppCompatActivity { private DetailedFragment detailedFragment; private final String DETAILED_FRAGMENT_TAG = "detailedFragmentTag"; String path = ""; Fragment fragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); if (savedInstanceState != null) { fragment = getSupportFragmentManager().findFragmentByTag("list_fragment_tag"); if (fragment instanceof FavouritesFragment) { fragmentTransaction.add(R.id.main_frame_list, new FavouritesFragment().getInstance("favourite"), "list_fragment_tag"); fragmentTransaction.commit(); } else if (fragment instanceof DetailedFragment) { fragmentTransaction.add(R.id.main_frame_list, new DetailedFragment(), "list_fragment_tag"); fragmentTransaction.commit(); } else { fragmentTransaction.add(R.id.main_frame_list, new ListFragment().getInstance("sort"), "list_fragment_tag"); fragmentTransaction.commit(); } } else { fragmentTransaction.add(R.id.main_frame_list, new ListFragment().getInstance("sort"), "list_fragment_tag"); fragmentTransaction.commit(); } } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Log.d("state_saving", "Inside activity saveInstanceState"); FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); if(outState != null && outState.getString(Contract.STATE_KEY) != null) { switch (outState.getString(Contract.STATE_KEY)) { case "popular": Log.d("state_saving", "Inside case Popular"); fragmentTransaction.replace(R.id.main_frame_list, new ListFragment().getInstance("popular")); fragmentTransaction.commit(); break; case "sort": Log.d("state_saving", "Inside case Sort"); fragmentTransaction.replace(R.id.main_frame_list, new ListFragment().getInstance("sort")); fragmentTransaction.commit(); break; case "favourite": Log.d("state_saving", "Inside case Favourite"); fragmentTransaction.replace(R.id.main_frame_list, new FavouritesFragment().getInstance("favourite")); fragmentTransaction.commit(); break; case "detailed": Log.d("state_saving", "Inside case Detailed"); fragmentTransaction.replace(R.id.main_frame_list, new DetailedFragment()); fragmentTransaction.commit(); break; } } else { Log.d("state_saving", "Inside Else"); fragmentTransaction.add(R.id.main_frame_list, new ListFragment().getInstance("sort")); //new Handler().post( () -> fragmentTransaction.commit()); } } @Override public void onBackPressed() { FragmentManager fm = getSupportFragmentManager(); //Checking for number of opened fragments if (fm.getBackStackEntryCount() > 0) { //Just closing current fragment fm.popBackStack(); //Go to previous fragment goToPreviousFragment(fm); } else { finish(); } } /** * Checking fragments and sending us on previous fragment * * @param fragmentManager - we can use method to get all current open fragments in back stack */ private void goToPreviousFragment(FragmentManager fragmentManager) { FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); for (Fragment fragment : fragmentManager.getFragments()) { if (fragment.getArguments().getString("path") != null) { path = fragment.getArguments().getString("path"); switch (path) { case "sort": openFragment(new ListFragment().getInstance("sort"), fragmentTransaction); break; case "favourite": openFragment(new FavouritesFragment().getInstance(""), fragmentTransaction); break; case "popular": openFragment(new ListFragment().getInstance("popular"), fragmentTransaction); break; default: fragmentManager.popBackStack(); break; } } } } private void openFragment(Fragment fragment, FragmentTransaction transaction) { transaction.replace(R.id.main_frame_list, fragment); transaction.commit(); } Thanks so much for any hint or advice!