I have been struggling to implement a super simple app layout, where my MainActivity
opens Fragment#1
in its onCreate
method, then the Fragment#1
opens Fragment#2
when an item is clicked.
As of right now, when I open Fragment#1
from my MainActivity
, I add Fragment#1
to the BackStack. After opening Fragment#2
, when I hit the back button the first click does nothing, then the second click sends me all the way back to my login page, skipping past Fragment #1
and MainActivity
.
How can I make it so when I hit the back button on Fragment#2
, it opens Fragment#1
back up?
(MainActivity
opens Fragment#1
)
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
SearchListFragment fragment = new SearchListFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.main_fragment_container, fragment);
transaction.addToBackStack(TAG);
transaction.commit();
}
}
(Fragment#1
opens Fragment#2
)
public class SearchListFragment extends Fragment {
public void viewResults(SearchModel search) {
Bundle args = new Bundle();
args.putString("ID", search.getId());
ResultsFragment fragment = new ResultsFragment();
fragment.setArguments(args);
FragmentTransaction transaction = getParentFragmentManager().beginTransaction();
transaction.replace(R.id.main_fragment_container, fragment);
transaction.commit();
}
}
EDIT
I should have mentioned that I have tried to handle the back press event myself. I tried adding this to my MainActivity
but it did not change the behavior:
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
this.finish();
} else {
getSupportFragmentManager().popBackStack();
}
}