Android 如何在片段中使用setSupportActionBar

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;

我需要在片段中使用setSupportActionBar,我无法也无法使用setContentView。请帮助我,也提前谢谢 给出了相关代码

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请看一下更新后的示例,希望能有所帮助!工作完美,感谢你的例子,我还发现了相关的