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.
The best and easiest way to do this, is to go to Android Manifest and change the
label
within theActivity
section. This is what's responsible for labelling the Activity along the toolbar. This saves you writing lines of code in the class file.In kotlin
Edit:
Added null safe operator?
to avoidNullPointer
in case ActionBar not availableThis worked for me inside an activity. I haven't tried it inside fragment.
Actually you can just do the following:
I make the change in
onActivityCreated
because the Activity may have not been fully initialized yet inonCreateView
. InonActivityCreated
there is no risk of getting aNullPointerException
.NOTE: I am using an
AppCompatActivity
with aToolbar
and v4Fragments
associated to it.Kotlin set title from resources
Activity:
Fragment:
Change it to
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.