I am using Fragments in my Application.So on the home page i have a grid view of 5 item on selection of which again i am opening a new fragment .
So what is happening is on back press it is showing a blank screen after that it is closing the application .
Please suggest me what i have done wrong in this.
MyCode
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v, int arg2,
long arg3) {
if (DASHBOARD_LINKS[arg2].equals("A")) {
fragTran.replace(R.id.content_frame,
firstFrag);
fragTran.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragTran.addToBackStack(null);
fragTran.commit();
}
if (DASHBOARD_LINKS[arg2].equals("B")) {
fragTran.replace(R.id.content_frame, secondFrag);
fragTran.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragTran.addToBackStack(null);
fragTran.commit();
}
if (DASHBOARD_LINKS[arg2].equals("C")) {
fragTran.replace(R.id.content_frame, thirdFarg);
fragTran.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragTran.addToBackStack(null);
fragTran.commit();
}
}
});
Please help my this is happening
addToBackStack
() method. Because it is responsible for Navigation Back. We don't want to go back from first Page. So don't add it to backStack.fragmentTransacation.add
then while comming back from B to A.onViewCreated
oronResume
method will not called as you have added a fragment to it. So in order to hitonResume
oronViewCreated
while going back to Fragment A. you should call fragmentTransaction.replaceMy suggestion for you is that let
addToBackStack(null)
in the fragment call.But remove this line
addToBackStack(null)
from the Homepage after which
onbackpress
you are getting the blank screen hope this will for you .I am assuming that you want to handle back button press. You can do the following,
before transitioning between
Fragments
, calladdToBackStack()
like the following,For clear info please see this post https://stackoverflow.com/a/7992472/1665507
This will happen if you navigating fragment from one activity to the fragment of the second activity. And while replacing your fragment you are adding them into backstack, so don't add the first fragment of respective activities into backstack.
addToBackStack() <--dont include this for your first fragment.-->