Setting Custom ActionBar Title from Fragment

What you’re doing is correct. Fragments don’t have access to the ActionBar APIs, so you have to call getActivity. Unless your Fragment is a static inner class, in which case you should create a WeakReference to the parent and call Activity.getActionBar from there.

To set the title for your ActionBar, while using a custom layout, in your Fragment you’ll need to call getActivity().setTitle(YOUR_TITLE).

The reason you call setTitle is because you’re calling getTitle as the title of your ActionBar. getTitle returns the title for that Activity.

If you don’t want to get call getTitle, then you’ll need to create a public method that sets the text of your TextView in the Activity that hosts the Fragment.

In your Activity:

public void setActionBarTitle(String title){
    YOUR_CUSTOM_ACTION_BAR_TITLE.setText(title);
}

In your Fragment:

((MainFragmentActivity) getActivity()).setActionBarTitle(YOUR_TITLE);

Docs:

Activity.getTitle

Activity.setTitle

Also, you don’t need to call this.whatever in the code you provided, just a tip.

Leave a Comment