OnBack Press Fragment showing blank Screen

2019-06-25 12:29发布

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

7条回答
Fickle 薄情
2楼-- · 2019-06-25 12:46

Fragment showing blank solutions.

  1. Make sure to add first Base Fragment without 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.
  2. While moving from Fragment A to Fragment B if you have call fragmentTransacation.add then while comming back from B to A. onViewCreated or onResume method will not called as you have added a fragment to it. So in order to hit onResume or onViewCreated while going back to Fragment A. you should call fragmentTransaction.replace
查看更多
放荡不羁爱自由
3楼-- · 2019-06-25 12:52

My 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 .

查看更多
一纸荒年 Trace。
4楼-- · 2019-06-25 12:57

I am assuming that you want to handle back button press. You can do the following,

before transitioning between Fragments, call addToBackStack() like the following,

 fragTran.replace(R.id.content_frame, secondFrag);
                    fragTran.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
                    fragTran.addToBackStack("TAG");
                    fragTran.commit();

For clear info please see this post https://stackoverflow.com/a/7992472/1665507

查看更多
虎瘦雄心在
5楼-- · 2019-06-25 12:59

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.

查看更多
相关推荐>>
6楼-- · 2019-06-25 13:00

addToBackStack() <--dont include this for your first fragment.-->

if(getSupportFragmentManager().getBackStackEntryCount() !=1){
                fragmentTransaction.addToBackStack("placeholder");
            }
查看更多
手持菜刀,她持情操
7楼-- · 2019-06-25 13:05
@Override
public void onBackPressed() {
    int fragments = getSupportFragmentManager().getBackStackEntryCount();
    if (fragments == 1) {
        finish();
    } else {
        if (getFragmentManager().getBackStackEntryCount() > 1) {
            getFragmentManager().popBackStack();
        } else {
            super.onBackPressed();
        }
    }
}
查看更多
登录 后发表回答