Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add "UP" back button in fragment (Fragment to Activity)

I want to go from fragment to activity using back button using toolbar back icon.

like this one

The fragment is my navigation drawer item & activity is my MainActivity.

How do I do it?

like image 904
Kishan Nath Avatar asked Jul 27 '17 08:07

Kishan Nath


4 Answers

You can use app:navigationIcon="?attr/homeAsUpIndicator" for that back navigation icon.

 <android.support.v7.widget.Toolbar
            android:id="@+id/toolbarId"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:navigationIcon="?attr/homeAsUpIndicator"/>

For navigation:

Toolbar toolbar = (ToolBar) getActivity().findViewById(R.id.toolbarId);

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            getActivity().onBackPressed();
        }
    });
like image 184
Satan Pandeya Avatar answered Oct 09 '22 19:10

Satan Pandeya


Call this method in your fragment onCreateView

public void showBackButton() {
if (getActivity() instanceof ActionBarActivity) {
    ((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
like image 6
sasikumar Avatar answered Oct 09 '22 20:10

sasikumar


It might help in case if you want to come back from fragment to previous location.

Put this in your class with navController.

  @Override
public boolean onSupportNavigateUp() {
    navController.navigateUp();
    return super.onSupportNavigateUp();
}

don't forget implement relevant dependency such as navigation and navigation UI.

like image 1
MR.Kay Avatar answered Oct 09 '22 21:10

MR.Kay


Try this worked for me :

  1. in XML:

    <android.support.v7.widget.Toolbar
     android:id="@+id/profileToolbar"
     android:layout_width="match_parent"
     android:layout_height="wrap_content">
    
  2. Create an back arrow icon in drawable folder. Name it 'ic_back_button'. Not sure how :-
    just right click on drawable > new > ImageAsset > Clip Art > Search back > select > OK > Finish (don't forget to change the name).

  3. then Inside your fragment in onCreateView :

        Toolbar toolbar = view.findViewById(R.id.profileToolbar);
        toolbar.setNavigationIcon(R.drawable.ic_back_button);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          getActivity().onBackPressed();
        }
        });
    
like image 4
Sidharth K.Burnwal Avatar answered Oct 09 '22 21:10

Sidharth K.Burnwal