priyadarshi nihal
priyadarshi nihal

Reputation: 23

How to go back from Fragment to Fragment?

How I go to the previous fragment when I click on back button.

RecyclerAdapter_1_ten.java

public class RecyclerAdapter_1_ten extends RecyclerView.Adapter<RecyclerAdapter_1_ten.ViewHolder> {

private String[] SubTxt = {"NCERT Solution",
        "Notes"};

private int[] SubImage = {R.drawable.ic_answers_black_48dp,
        R.drawable.ic_notes_black_48dp};

Activity activity;
public RecyclerAdapter_1_ten(Activity activity) {
    this.activity = activity;
}

class ViewHolder extends RecyclerView.ViewHolder {

    public int currentItem;
    public ImageView itemImage;
    public TextView itemTitle;


    public ViewHolder(View itemView) {
        super(itemView);
        itemImage = (ImageView) itemView.findViewById(R.id.SubImage);
        itemTitle = (TextView) itemView.findViewById(R.id.SubTxt);


        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position = getAdapterPosition();

                switch (position) {
                    case 0:
                        android.app.FragmentManager fm = activity.getFragmentManager();
                        fm.beginTransaction().replace(R.id.content_frame, new SecondClass_10()).commit();
                    case 1:
                        Snackbar.make(v, "Comming Soon " + position,
                                Snackbar.LENGTH_LONG)
                                .setAction("Action", null).show();

                }

            }
        });
    }
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View v = LayoutInflater.from(viewGroup.getContext())
            .inflate(R.layout.recycler_1_9, viewGroup, false);
    ViewHolder viewHolder = new ViewHolder(v);
    return viewHolder;
}

@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
    viewHolder.itemTitle.setText(SubTxt[i]);
    viewHolder.itemImage.setImageResource(SubImage[i]);
}

@Override
public int getItemCount() {
    return SubTxt.length;
}
}

SecondClass_10.java

public class SecondClass_10 extends Fragment {
RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
RecyclerView.Adapter adapter;
View rootview;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    rootview = inflater.inflate(R.layout.second_class_10, container, false);
    recyclerView = (RecyclerView) rootview.findViewById(R.id.recycler_ten_page_second);

    layoutManager = new LinearLayoutManager(getActivity());
    recyclerView.setLayoutManager(layoutManager);

    adapter = new RecyclerAdapter_2_ten();
    recyclerView.setAdapter(adapter);
    return rootview;
}
}

MainActivity.java

public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);


    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

    android.app.FragmentManager fm = getFragmentManager();
    fm.beginTransaction().replace(R.id.content_frame, new FirstClass_9()).commit();
}

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    android.app.FragmentManager fn = getFragmentManager();
    int id = item.getItemId();

    if (id == R.id.nav_9) {
        fn.beginTransaction().replace(R.id.content_frame, new FirstClass_9()).commit();

    } else if (id == R.id.nav_10) {
        fn.beginTransaction().replace(R.id.content_frame, new FirstClass_10()).commit();

    } else if (id == R.id.nav_11) {
        fn.beginTransaction().replace(R.id.content_frame, new FirstClass_11()).commit();

    } else if (id == R.id.nav_12) {
        fn.beginTransaction().replace(R.id.content_frame, new FirstClass_12()).commit();

    } else if (id == R.id.nav_aboutUs) {


    } else if (id == R.id.nav_feedback) {


    }
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}



}

I follow many Tutorial but I didn't get solution Hope I'll get answer here. I have added recyclerview when I click on it it open fragment but when I click on back button instead of going back it goes to first Page.

How to go back to Fragment from Fragment when I click on Back button?

Upvotes: 1

Views: 748

Answers (2)

Gaurav Sarma
Gaurav Sarma

Reputation: 2297

This is one of the best explanation that i came across when i started in SO for fragment navigation i hope it helps clear your understanding of how they work.

Android fragments navigation and backstack

Upvotes: 0

Mushtu
Mushtu

Reputation: 488

You can use Stack for holding the fragment instances. When you move to the next fragment push the fragment into the stack and detach it from your activity and in the onbackpressed event pop the fragment and attach it to the activity.

Upvotes: 1

Related Questions