From cc1bad046a99bd8ea1ebf93ffe54a2f1a3369e29 Mon Sep 17 00:00:00 2001 From: bunnei Date: Fri, 30 Aug 2019 13:50:32 -0400 Subject: [PATCH] android: frontend: gamelist: Save PlatformGamesFragment state. - Fixes weird duplication of game list on rotation. --- .../citra_android/ui/main/MainActivity.java | 25 +++++++++++-------- .../ui/platform/PlatformGamesFragment.java | 3 +-- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/android/app/src/main/java/org/citra/citra_android/ui/main/MainActivity.java b/src/android/app/src/main/java/org/citra/citra_android/ui/main/MainActivity.java index 1c392b972..b66d35fd4 100644 --- a/src/android/app/src/main/java/org/citra/citra_android/ui/main/MainActivity.java +++ b/src/android/app/src/main/java/org/citra/citra_android/ui/main/MainActivity.java @@ -6,6 +6,7 @@ import android.database.Cursor; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.FloatingActionButton; +import android.support.v4.app.Fragment; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; @@ -46,23 +47,27 @@ public final class MainActivity extends AppCompatActivity implements MainView { setSupportActionBar(mToolbar); mFrameLayoutId = R.id.games_platform_frame; - - // Set up the FAB. mFab.setOnClickListener(view -> mPresenter.onFabClick()); - mPresenter.onCreate(); - // Stuff in this block only happens when this activity is newly created (i.e. not a rotation) - if (savedInstanceState == null) + if (savedInstanceState == null) { StartupHandler.HandleInit(this); - - if (PermissionsHandler.hasWriteAccess(this)) { - mPlatformGamesFragment = new PlatformGamesFragment(); - getSupportFragmentManager().beginTransaction().add(mFrameLayoutId, mPlatformGamesFragment) - .commit(); + if (PermissionsHandler.hasWriteAccess(this)) { + mPlatformGamesFragment = new PlatformGamesFragment(); + getSupportFragmentManager().beginTransaction().add(mFrameLayoutId, mPlatformGamesFragment) + .commit(); + } + } else { + mPlatformGamesFragment = (PlatformGamesFragment) getSupportFragmentManager().getFragment(savedInstanceState, "mPlatformGamesFragment"); } } + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + getSupportFragmentManager().putFragment(outState, "mPlatformGamesFragment", mPlatformGamesFragment); + } + @Override protected void onResume() { super.onResume(); diff --git a/src/android/app/src/main/java/org/citra/citra_android/ui/platform/PlatformGamesFragment.java b/src/android/app/src/main/java/org/citra/citra_android/ui/platform/PlatformGamesFragment.java index 78e09cb50..9b3f21aba 100644 --- a/src/android/app/src/main/java/org/citra/citra_android/ui/platform/PlatformGamesFragment.java +++ b/src/android/app/src/main/java/org/citra/citra_android/ui/platform/PlatformGamesFragment.java @@ -47,8 +47,7 @@ public final class PlatformGamesFragment extends Fragment implements PlatformGam mRecyclerView.setLayoutManager(layoutManager); mRecyclerView.setAdapter(mAdapter); - - mRecyclerView.addItemDecoration(new GameAdapter.SpacesItemDecoration(6)); + mRecyclerView.addItemDecoration(new GameAdapter.SpacesItemDecoration(8)); // Add swipe down to refresh gesture final SwipeRefreshLayout pullToRefresh = view.findViewById(R.id.refresh_grid_games);