Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android getSupportActionBar()使用自定义工具栏返回null_Android - Fatal编程技术网

Android getSupportActionBar()使用自定义工具栏返回null

Android getSupportActionBar()使用自定义工具栏返回null,android,Android,我有一个工具栏。现在,我想在我的应用程序中添加导航选项卡。为此,我编写了以下代码: super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.app_bar); toolbar.setLogo(R.mipmap.ic_launcher); // toolbar.set

我有一个工具栏。现在,我想在我的应用程序中添加导航选项卡。为此,我编写了以下代码:

super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toolbar = (Toolbar) findViewById(R.id.app_bar);
        toolbar.setLogo(R.mipmap.ic_launcher);
//        toolbar.setTitle(" Daily Qura'n Verses");
        setSupportActionBar(toolbar);

        ActionBar actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        actionBar.setDisplayShowTitleEnabled(false);

        ActionBar.Tab tab = actionBar.newTab()
                .setText("Artistic Fragment")
                .setTabListener(new TabListener<ArtistFragment>(
                        this, "artist", ArtistFragment.class));
        actionBar.addTab(tab);

        tab = actionBar.newTab()
                .setText("Album Fragment")
                .setTabListener(new TabListener<AlbumFragment>(
                        this, "album", AlbumFragment.class));
        actionBar.addTab(tab);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
工具栏=(工具栏)findViewById(R.id.app\u栏);
工具栏.setLogo(R.mipmap.ic_启动器);
//工具栏.setTitle(“每日古兰经诗篇”);
设置支持操作栏(工具栏);
ActionBar ActionBar=getSupportActionBar();
actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u选项卡);
actionBar.setDisplayShowTitleEnabled(false);
ActionBar.Tab选项卡=ActionBar.newTab()
.setText(“艺术片段”)
.setTabListener(新的TabListener(
这是“艺术家”,ArtistFragment.class);
actionBar.addTab(tab);
tab=actionBar.newTab()
.setText(“相册片段”)
.setTabListener(新的TabListener(
这是“album”,AlbumFragment.class);
actionBar.addTab(tab);
我没有在styles.xml中设置任何操作栏:

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorAccent">@color/accentColor</item>
        <item name="colorPrimary">@color/primaryColor</item>
        <item name="colorPrimaryDark">@color/primaryColorDark</item>
    </style>

@颜色/强调色
@颜色/原色
@颜色/原色深色
我有两个片段:

  • 白蛋白片段
  • 艺术家片段
  • 我有一个java类,TabListener:

    package com.example.shiza.dailyquranverses;
    import android.app.Activity;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentTransaction;
    import android.support.v7.app.ActionBar;
    
    public class TabListener<T extends Fragment> implements ActionBar.TabListener {
        private Fragment mFragment;
        private final Activity mActivity;
        private final String mTag;
        private final Class<T> mClass;
    
        /** Constructor used each time a new tab is created.
         * @param activity  The host Activity, used to instantiate the fragment
         * @param tag  The identifier tag for the fragment
         * @param clz  The fragment's Class, used to instantiate the fragment
         */
        public TabListener(Activity activity, String tag, Class<T> clz) {
            mActivity = activity;
            mTag = tag;
            mClass = clz;
        }
    
        /* The following are each of the ActionBar.TabListener callbacks */
    
        public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
            // Check if the fragment is already initialized
            if (mFragment == null) {
                // If not, instantiate and add it to the activity
                mFragment = Fragment.instantiate(mActivity, mClass.getName());
                ft.add(android.R.id.content, mFragment, mTag);
            } else {
                // If it exists, simply attach it in order to show it
                ft.attach(mFragment);
            }
        }
    
        public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
            if (mFragment != null) {
                // Detach the fragment, because another one is being attached
                ft.detach(mFragment);
            }
        }
    
        public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
            // User selected the already selected tab. Usually do nothing.
        }
    }
    
    package com.example.shiza.dailyquranverses;
    导入android.app.Activity;
    导入android.support.v4.app.Fragment;
    导入android.support.v4.app.FragmentTransaction;
    导入android.support.v7.app.ActionBar;
    公共类TablListener实现ActionBar.TablListener{
    私人碎片;
    私人最终活动能力;
    私有最终字符串mTag;
    私人期末班;
    /**每次创建新选项卡时使用的构造函数。
    *@param activity主机活动,用于实例化片段
    *@param标记片段的标识符标记
    *@param clz片段的类,用于实例化片段
    */
    公共TabListener(活动、字符串标记、类clz){
    活动性=活动性;
    mTag=标签;
    mClass=clz;
    }
    /*下面是ActionBar.TabListener回调的每个部分*/
    已选择的公共事务(ActionBar.Tab选项卡,FragmentTransaction ft){
    //检查片段是否已初始化
    if(mFragment==null){
    //如果不是,则实例化并将其添加到活动中
    MFFragment=Fragment.instantiate(mActivity,mClass.getName());
    ft.add(android.R.id.content、mFragment、mTag);
    }否则{
    //如果存在,只需将其附加以显示即可
    ft.attach(mFragment);
    }
    }
    已选择公共无效OnTab(ActionBar.Tab选项卡,FragmentTransaction ft){
    if(mFragment!=null){
    //拆下碎片,因为正在连接另一个碎片
    ft.分离(mFragment);
    }
    }
    已重新选择公共void ontaber(ActionBar.Tab选项卡,FragmentTransaction ft){
    //用户选择了已选择的选项卡。通常不执行任何操作。
    }
    }
    
    我认为罪魁祸首如下:

    actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u选项卡)

    因为它给了我警告


    在运行应用程序时,它会给我错误信息。请帮我解决这个问题。

    在Android 5.0中,操作栏中的选项卡已被弃用<代码>工具栏根本不支持它,您正在尝试将
    工具栏
    用于操作栏。我相信你需要为选项卡使用其他东西,比如Android设计支持库中的
    TabLayout
    。我遵循developers.Android.com的指南,这并没有改变一个事实,即Android 5.0中不推荐使用操作栏选项卡,
    工具栏
    不支持它们。然后,任何链接,如果有不推荐使用的文档,那么我们能做什么呢?正如我所写的,我相信您需要为选项卡使用其他内容,比如Android设计支持库中的TabLayout。或者,使用带有
    ViewPager
    的选项卡式指示器(例如,开源
    PagerSlidingTabStrip
    )。或者,使用
    FragmentTabHost