Android 如何在片段中使用setSupportActionBar
我需要在片段中使用setSupportActionBar,我无法也无法使用setContentView。请帮助我,也提前谢谢 给出了相关代码Android 如何在片段中使用setSupportActionBar,android,android-fragments,android-actionbar,Android,Android Fragments,Android Actionbar,我需要在片段中使用setSupportActionBar,我无法也无法使用setContentView。请帮助我,也提前谢谢 给出了相关代码 public class StudentrFragment extends Fragment { Toolbar toolbar; TabLayout tabLayout; ViewPager viewPager; ViewPagerAdapter viewPagerAdapter;
public class StudentrFragment extends Fragment {
Toolbar toolbar;
TabLayout tabLayout;
ViewPager viewPager;
ViewPagerAdapter viewPagerAdapter;
public StudentrFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.tabbar_layout);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPagerAdapter.addFragments(new CivilFragment(),"Civil Dept");
viewPagerAdapter.addFragments(new ComputerFragment(),"CSE Dept");
viewPagerAdapter.addFragments(new EeeFragment(),"EEE Dept");
viewPagerAdapter.addFragments(new EceFragment(),"ECE Dept");
viewPager.setAdapter(viewPagerAdapter);
tabLayout.setupWithViewPager(viewPager);
}
}
您可以在片段中这样设置SupportActionBar:
((AppCompatActivity)getActivity()).setSupportActionBar(mToolbar);
您需要在Fragment
的onCreateView
中充气tabbar\u布局。
像这样:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tabbar_layout, container, false);
//YOUR STUFF
return rootView;
}
这是可行的,但它看起来并不优雅,理想情况下,片段不应该知道任何关于其父活动的信息。另一种选择可能是根本不使用setSupportActionBar
。如果使用库,则可以更容易地将添加到片段布局,并使用以下方法进行设置,例如:
. 另请查看另一个问题和我的,以了解更多详细信息。
粘贴它:
toolbar = (Toolbar) getView().findViewById(R.id.toolbar);
AppCompatActivity activity = (AppCompatActivity) getActivity();
activity.setSupportActionBar(toolbar);
如果(getActivity()instanceof AppCompatActivity){//开始将其用作AppCompatActivity},那么最好将其包装为:if(getActivity()instanceof AppCompatActivity){//开始将其用作AppCompatActivity}
。因为您不知道人们如何/在何处使用您的片段?如果您扩展了一个支持片段,它肯定会在支持(AppCompat)活动中使用,尤其是现在有了AndroidX更改。如果您真的想检查(但应该没有必要),(活动为?AppCompatActivity)?。setSupportActionBar(myToolbar)
可以。您好Valeriy,我查看了您的示例,菜单似乎膨胀得很好。您建议将处理菜单选项选择的代码放置在何处?因为这样就不再调用onOptionsItemSelected
方法了。@Wafje请看一下更新后的示例,希望能有所帮助!工作完美,感谢你的例子,我还发现了相关的