设置工具栏标题
Set toolbar title
我正在尝试像这样设置我的工具栏标题:
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");
另外,如何阻止我的应用程序标题显示在应用程序栏中?我也想在可以设置的时候将标题设为白色。
改为
((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("Home");
您需要告诉 activity 这是一个 AppCompatActivity
。
然后你使用 getActivity()
得到主要的 activity 因为你在一个片段中。
然后照常设置标题即可。
其实你可以做到以下几点:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getActivity().setTitle("My title");
}
我在 onActivityCreated
中进行更改,因为 Activity 在 onCreateView
中可能尚未完全初始化。在 onActivityCreated
中没有获得 NullPointerException
.
的风险
注意:我正在使用 AppCompatActivity
与 Toolbar
和 v4 Fragments
关联。
这在 activity 中对我有用。我还没有在 fragment 里面试过。
this.setTitle("welcome")
ActiviryName.this.setTitle("welcome");
最好和最简单的方法是转到 Android 清单并更改 Activity
部分中的 label
。这是负责在工具栏上标记 Activity 的内容。这样可以节省您在 class 文件中编写代码行的时间。
在科特林中
(activity as? AppCompatActivity)?.supportActionBar?.title = "title"
Edit:
添加空安全运算符 ?
以避免 NullPointer
在 ActionBar 不可用的情况下
Kotlin 从资源中设置标题
Activity:
setTitle(R.string.some_title)
片段:
activity?.setTitle(R.string.some_title)
在科特林中:
在onCreate
方法中放入title = "Some Text Here"
我正在尝试像这样设置我的工具栏标题:
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");
另外,如何阻止我的应用程序标题显示在应用程序栏中?我也想在可以设置的时候将标题设为白色。
改为
((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("Home");
您需要告诉 activity 这是一个 AppCompatActivity
。
然后你使用 getActivity()
得到主要的 activity 因为你在一个片段中。
然后照常设置标题即可。
其实你可以做到以下几点:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getActivity().setTitle("My title");
}
我在 onActivityCreated
中进行更改,因为 Activity 在 onCreateView
中可能尚未完全初始化。在 onActivityCreated
中没有获得 NullPointerException
.
注意:我正在使用 AppCompatActivity
与 Toolbar
和 v4 Fragments
关联。
这在 activity 中对我有用。我还没有在 fragment 里面试过。
this.setTitle("welcome")
ActiviryName.this.setTitle("welcome");
最好和最简单的方法是转到 Android 清单并更改 Activity
部分中的 label
。这是负责在工具栏上标记 Activity 的内容。这样可以节省您在 class 文件中编写代码行的时间。
在科特林中
(activity as? AppCompatActivity)?.supportActionBar?.title = "title"
Edit:
添加空安全运算符 ?
以避免 NullPointer
在 ActionBar 不可用的情况下
Kotlin 从资源中设置标题
Activity:
setTitle(R.string.some_title)
片段:
activity?.setTitle(R.string.some_title)
在科特林中:
在onCreate
方法中放入title = "Some Text Here"