Android Studio中的选项卡式活动模板无法在Lollipop上运行

时间:2015-02-24 20:28:14

标签: android android-studio

我正在运行Android Studio 1.1.0。

我使用Android Studio向导创建了一个新项目,并选择了MinimumSDK:API 15和Tabbed Activity。

目标SDK自动设置为API 21.

当我在Genymotion Nexus 5上运行这个项目(没有修改)时,API19(4.4.4)仿真器的一切看起来都像预期的那样。

当我在Genymotion Nexus 6,API21(5.0.0)模拟器上运行这个项目(没有修改)时,我只得到一个空白的白色屏幕。

这是MainActivity中生成的onCreate

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Set up the action bar.
    final ActionBar actionBar = getSupportActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // Create the adapter that will return a fragment for each of the three
    // primary sections of the activity.
    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

    // Set up the ViewPager with the sections adapter.
    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mSectionsPagerAdapter);

    // When swiping between different sections, select the corresponding
    // tab. We can also use ActionBar.Tab#select() to do this if we have
    // a reference to the Tab.
    mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            actionBar.setSelectedNavigationItem(position);
        }
    });

    // For each of the sections in the app, add a tab to the action bar.
    for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
        // Create a tab with text corresponding to the page title defined by
        // the adapter. Also specify this Activity object, which implements
        // the TabListener interface, as the callback (listener) for when
        // this tab is selected.
        actionBar.addTab(
                actionBar.newTab()
                        .setText(mSectionsPagerAdapter.getPageTitle(i))
                        .setTabListener(this));
    }
}

Android Studio告诉我

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

actionBar.setSelectedNavigationItem(position);

actionBar.addTab(
                    actionBar.newTab()
                            .setText(mSectionsPagerAdapter.getPageTitle(i))
                            .setTabListener(this));

已弃用,这可以解释为什么它们无法在我的API21设备中运行。

如何更改这些已弃用的方法以便在API21上工作并仍然可以使用

我很沮丧,Android Studio的模板不适用于最新的API。

1 个答案:

答案 0 :(得分:0)

Tl; dr此行为在多次运行中保持不变,但在删除并重新创建模拟器

后立即生效

我实现了CommonsWare在this bug中引用的代码,但仍然看到了一个空白屏幕。

我在代码中放置了一个断点,并锁定了Genymotion Lollipop Emulator。我无法成功重启它。

我删除了模拟器并重新安装,现在修改后的代码正在运行。

为了验证,我像以前一样创建了一个新项目,它也适用于新创建的棒棒糖模拟器。

令我沮丧的是,我无法复制我看到的原始错误。