Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set toolbar title

I am trying to set my toolbar title like so:

public class StatisticsPage extends Fragment  {

    public StatisticsPage(){}
    private FragmentTabHost mTabHost;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.statistics_pagelayout, container, false);

        Spinner spinner = (Spinner) rootView.findViewById(R.id.statsSpin);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity(),
                R.array.statspage, R.layout.dropdown_item);
        spinner.setAdapter(adapter);
        getSupportActionBar().setTitle("My title");

        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {

                switch (position) {
                    case 0:
                        break;
                    case 1:
                        // do whatever stuff you wanna do here
                        Fragment Fragment_one;
                        FragmentManager man= getActivity().getSupportFragmentManager();
                        FragmentTransaction tran = man.beginTransaction();
                        Fragment_one = new BreweryStatistics();
                        tran.replace(R.id.main, Fragment_one);//tran.
                        tran.addToBackStack(null);
                        tran.commit();
                        break;
                    case 2:
                        Fragment Fragment_two;
                        FragmentManager mantwo= getActivity().getSupportFragmentManager();
                        FragmentTransaction trantwo = mantwo.beginTransaction();
                        Fragment_two = new StyleStatistics();
                        trantwo.replace(R.id.main, Fragment_two);//tran.
                        trantwo.addToBackStack(null);
                        trantwo.commit();
                        break;
                    case 3:
                        Fragment Fragment_three;
                        FragmentManager manthree= getActivity().getSupportFragmentManager();
                        FragmentTransaction tranthree = manthree.beginTransaction();
                        Fragment_three = new TasteStatisticsPage();
                        tranthree.replace(R.id.main, Fragment_three);//tran.
                        tranthree.addToBackStack(null);
                        tranthree.commit();
                        break;
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parentView) {
                // your code here
            }
        });

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
        String userName = prefs.getString("userName", null);
        String userID = prefs.getString("userID", null);
        String url = "myURL";
        String userURLComp = "u=" + userID;

        url = url + userURLComp ;

        new getBasicStats(getActivity()).execute(url);

        return rootView;
    }
}

Basically this line in the above code does not work in the fragment:

getSupportActionBar().setTitle("My title");

Also How can I stop my app title from showing up in the app bar? I would also like to make the title white when I can set it.

like image 459
Mike Avatar asked Mar 10 '15 00:03

Mike


People also ask

How do I change the title text bar in Android?

First, add a font file in the src/main/assets/fonts/ of your project. Then create variables for Toolbar and text title and call the method findViewById(). Create a new Typeface from the specified font data. And at last setTypeface in text title.


2 Answers

Change it to

((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("Home");

You needed to tell the activity it is an AppCompatActivity.

Then you use getActivity() to get the main activity since you are in a fragment.

Then just set the title as usual.

like image 142
Tristan Wiley Avatar answered Sep 20 '22 19:09

Tristan Wiley


In kotlin

(activity as? AppCompatActivity)?.supportActionBar?.title = "title"

Edit: Added null safe operator ? to avoid NullPointer in case ActionBar not available

like image 26
Ali hasan Avatar answered Sep 18 '22 19:09

Ali hasan