J'essaie de définir le titre de ma barre d'outils comme suit:
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;
}
}
Fondamentalement, cette ligne dans le code ci-dessus ne fonctionne pas dans le fragment:
getSupportActionBar().setTitle("My title");
Aussi, comment puis-je empêcher le titre de mon application de s'afficher dans la barre d'applications? Je voudrais aussi rendre le titre blanc lorsque je peux le définir.
Le changer en
((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("Home");
Vous deviez dire à l'activité qu'il s'agissait d'une AppCompatActivity
.
Ensuite, vous utilisez getActivity()
pour obtenir l'activité principale puisque vous êtes dans un fragment.
Ensuite, définissez le titre comme d'habitude.
En kotlin
(activity as? AppCompatActivity)?.supportActionBar?.title = "title"
Edit:
Ajouté l'opérateur sûr null ?
pour éviter NullPointer
au cas où ActionBar ne serait pas disponible
En fait, vous pouvez simplement faire ce qui suit:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getActivity().setTitle("My title");
}
Je fais le changement dans onActivityCreated
car l'activité n'a peut-être pas encore été complètement initialisée dans onCreateView
. Dans onActivityCreated
, il n'y a aucun risque d'obtenir un NullPointerException
.
NOTE: J'utilise une AppCompatActivity
avec une Toolbar
et une v4 Fragments
qui lui sont associées.
Kotlin a défini le titre des ressources
Activité:
setTitle(R.string.some_title)
Fragment:
activity?.setTitle(R.string.some_title)
Pour ce faire, la meilleure et la plus simple consiste à ouvrir le manifeste Android et à modifier la variable label
dans la section Activity
. C'est ce qui est responsable de l'étiquetage de l'activité le long de la barre d'outils. Cela vous évite d’écrire des lignes de code dans le fichier de classe.