Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.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
Java actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u选项卡)已弃用_Java_Android - Fatal编程技术网

Java actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u选项卡)已弃用

Java actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u选项卡)已弃用,java,android,Java,Android,我正在跟随教程,我得到了错误 java.lang.NullPointerException:尝试调用虚拟方法“void” 空对象上的android.app.ActionBar.setNavigationMode(int)“” 参考文献 我正在使用Android Studio编写这个程序,从API 11到API 21我都试过了,但都不管用 public class Tabtest extends FragmentActivity implements ActionBar.TabListener {

我正在跟随教程,我得到了错误

java.lang.NullPointerException:尝试调用虚拟方法“void” 空对象上的android.app.ActionBar.setNavigationMode(int)“” 参考文献

我正在使用Android Studio编写这个程序,从API 11到API 21我都试过了,但都不管用

public class Tabtest extends FragmentActivity implements ActionBar.TabListener {

    ActionBar actionBar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tab_test);

        actionBar=getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        ActionBar.Tab tab1=actionBar.newTab();
        tab1.setText("tab1");
        tab1.setTabListener(this);

        ActionBar.Tab tab2=actionBar.newTab();
        tab2.setText("tab2");
        tab2.setTabListener(this);

        ActionBar.Tab tab3=actionBar.newTab();
        tab3.setText("tab3");
        tab3.setTabListener(this);

        ActionBar.Tab tab4=actionBar.newTab();
        tab4.setText("tab4");
        tab4.setTabListener(this);

        actionBar.addTab(tab1);
        actionBar.addTab(tab2);
        actionBar.addTab(tab3);
        actionBar.addTab(tab4);
    }

    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
        Log.d("VIVZ", "onTabReselected at "+" position "+tab.getPosition()+" name "+tab.getText());
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
        Log.d("VIVZ", "onTabReselected at "+" position "+tab.getPosition()+" name "+tab.getText());
    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
        Log.d("VIVZ", "onTabReselected at "+" position "+tab.getPosition()+" name "+tab.getText());
    }
}
你的主题显然是一个没有动作条的主题。由于您没有使用appcompat-v7,请确保您使用的主题支持本机操作栏,例如
theme.Holo
系列之一

相反,如果您尝试使用
appcompat-v7
,则需要从
ActionBarActivity
继承,并且需要使用
getSupportActionBar()
,而不是
getActionBar()


还要注意的是,从Android 5.0开始,操作栏选项卡就被弃用了。你应该考虑另一个制表方案,如<代码> ViewPager <代码>和<代码> PagerTabStrip < /C> >

< P>我在YouTube中遵循VIVZ示例,但是当方法被弃用时,我不得不另辟蹊径。尝试以下操作,而不是将选项卡添加到操作栏:

修改适配器:

public class CollectionPagerAdapter extends FragmentStatePagerAdapter {

    private String[] titles = {"Item 1", "Item 2", "Item 3" };

    public CollectionPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int i) {
        switch(i){
          case 0:
             return new FragmentA();
          case 1:
             return new FragmentB();
          case 2:
             return new FragmentC();        
        }
        return null;
    }

    @Override
    public int getCount() {
        return titles.length;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return titles[position];
    }
}
在要实现选项卡的活动中,请尝试

public class Tabtest extends ActionBarActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tab_test);

    ViewPager pager = (ViewPager) findViewById(R.id.your_view_pager);
    pager.setAdapter(new CollectionPagerAdapter(getSupportFragmentManager()));

    PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
    tabs.setViewPager(pager);
}
现在,如果您想在标签名下设置一个移动指示器,并在用户滚动编译此库时移动,如Google Play store

compile 'com.astuetz:pagerslidingtabstrip:1.0.1'
并修改viewpager布局文件,如下所示:

<LinearLayout
  //obviously add width and height and other necessery stuff
  android:orientation="vertical">

<com.astuetz.PagerSlidingTabStrip
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="48dip" />

<android.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />


</LinearLayout>

然后你会得到想要的效果

希望对你有帮助

我终于找到了答案。 第一个是你的android sdk

<uses-sdk android:minSdkVersion="11" />
第三 不要在活动中使用此代码

requestWindowFeature(Window.FEATURE_NO_TITLE);
第四 在活动中使用
import android.support.v4.app.ActionBar
而不是
import android.support.v7.app.ActionBar

requestWindowFeature(Window.FEATURE_NO_TITLE);
第五 更改此
actionBar=getActionBar()
actionbar=getSupportActionBar()

您可以使用“PagerSlidingTastrip”替换“setNavigationMode


这里是Github中的一个
getActionBar()
的代码在哪里?这个答案可能会对您有所帮助。当我做这个项目时,我没有看到任何关于主题的东西,那么我如何选择一个呢?你能给我发一份关于ViewPager和PagerTabStrip@RashaadBryan:“那么我如何选择一个呢?”--在清单中的
和/或
元素中查找
android:theme
属性。@RashaadBryan:关于
ViewPager
PagerTitleStrip
,这是我书中的一个示例应用程序:可能有一些教程,你可以通过搜索引擎找到。我在“样式”下检查,我的主题有一个操作栏,所以不应该有错误@CommonsWare@RashaadBryan:如果要使用基于
主题.AppCompat
的内容,则需要继承
ActionBarActivity
并使用
getSupportActionBar()
,而不是
getActionBar()
requestWindowFeature(Window.FEATURE_NO_TITLE);