我正在尝试设置我的工具栏标题:
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;
}
}
基本上上面代码中的这一行在片段中不起作用:
getSupportActionBar().setTitle("My title");
另外,如何阻止我的应用标题显示在应用栏中?我还想在设置它时将标题设为白色。
答案 0 :(得分:59)
将其更改为
((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("Home");
您需要告诉活动它是AppCompatActivity
。
然后您使用getActivity()
来获取主要活动,因为您处于片段中。
然后像往常一样设置标题。
答案 1 :(得分:4)
在科特林
(activity as? AppCompatActivity)?.supportActionBar?.title = "title"
Edit:
添加了空安全操作符?
,以避免在ActionBar不可用的情况下使用NullPointer
答案 2 :(得分:3)
实际上您可以执行以下操作:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getActivity().setTitle("My title");
}
我在onActivityCreated
进行了更改,因为活动可能尚未在onCreateView
中完全初始化。在onActivityCreated
中,不存在获得NullPointerException
的风险。
注意:我使用的AppCompatActivity
与Toolbar
和v4 Fragments
相关联。
答案 3 :(得分:1)
执行此操作的最佳和最简单方法是转到Android Manifest并更改label
部分中的Activity
。这是负责在工具栏上标记活动的内容。这样可以节省您在类文件中编写代码行。
答案 4 :(得分:1)
科特琳根据资源设置标题
活动:
setTitle(R.string.some_title)
片段:
activity?.setTitle(R.string.some_title)
答案 5 :(得分:0)
在科特林:
采用onCreate
方法放置title = "Some Text Here"
答案 6 :(得分:-1)
这对我来说是一项活动。我没有在片段内尝试过它。
this.setTitle("welcome")
ActiviryName.this.setTitle("welcome");