1

I currently am working on a newsfeed module where i have this issue of fragment transition.

Transition Example :

  1. Newsfeed >a> Profile >b> Detail >c> Profile.

  2. Newsfeed >a> Detail >b> Profile >c> Detail.

Every time i visit a page twice and tries to back again at "a". My app crashed giving nullpointerexception on

getActivity().onBackPressed();

in fragment. Each stack is poped in MainActivity in override onBackPressed. All flows are fine when there are no 2 of the same fragment transition in the backstack.

PopBackStack Example :

getSupportFragmentManager().popBackStack("profile", FragmentManager.POP_BACK_STACK_INCLUSIVE);

Let me know if you need more codes to help. Any help would be appreciated.

Thank you!

Edit:

Logcat Error :

09-19 02:15:02.399 29778-29778/com.dbs.alive E/AndroidRuntime: FATAL EXCEPTION: main
   Process: com.dbs.alive, PID: 29778
   java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.onBackPressed()' on a null object reference
       at com.dbs.alive.ProfileFragment$1.onClick(ProfileFragment.java:171)
       at android.view.View.performClick(View.java:5210)
       at android.view.View$PerformClick.run(View.java:21328)
       at android.os.Handler.handleCallback(Handler.java:739)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:148)
       at android.app.ActivityThread.main(ActivityThread.java:5551)
       at java.lang.reflect.Method.invoke(Native Method)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)

Main Activity (onBackPressed)

@Override
public void onBackPressed() {

    if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
        //this.finish();
        super.onBackPressed();
    } else {

        for (int i = getSupportFragmentManager().getBackStackEntryCount(); i > 0; i--) {
            String ide = getSupportFragmentManager().getBackStackEntryAt(i - 1).getName();
            if (ide != null) {
                //1. FROM NEWSFEED
                if (ide.equals("newsfeed")) {            
                getSupportFragmentManager().popBackStack("newsfeed", FragmentManager.POP_BACK_STACK_INCLUSIVE);
                break;
                } else if (ide.equals("profile")) {
                getSupportFragmentManager().popBackStack("profile", FragmentManager.POP_BACK_STACK_INCLUSIVE);
                break;
                }

Fragment AddBackStack

Fragment fragment = ProfileFragment.newInstance("", "");

Bundle mBundle = new Bundle();
mBundle.putString("profileid", postOwnerId);
mBundle.putString("profilename", postOwnerName);
mBundle.putString("profileicon", RealmHelper.getUserProfileUrl(postOwnerId));

fragment.setArguments(mBundle);

FragmentTransaction transaction = ((AppCompatActivity) activity).getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.newsfeed_layout, fragment);
transaction.addToBackStack("profile");
transaction.commit(); 
Jon Goodwin
  • 9,053
  • 5
  • 35
  • 54
aidentsl
  • 19
  • 2

0 Answers0