看看Android“L”预览的API diff报告,我看到所有与ActionBar类中的导航模式相关的方法(如setNavigationMode(), addTab(), selectTab(), &c)。现在已弃用。

文档解释说:

操作栏导航模式已弃用,内联不支持 工具栏操作栏。考虑使用其他常见的导航模式 代替。

替换的是什么?

另外,“内联工具栏操作栏”是一个新概念吗?我想我以前没听说过。


当前回答

FragmentTabHost也是一个选项。

这段代码来自Android开发者的网站:

/**
 * This demonstrates how you can implement switching between the tabs of a
 * TabHost through fragments, using FragmentTabHost.
 */
public class FragmentTabs extends FragmentActivity {
    private FragmentTabHost mTabHost;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.fragment_tabs);
    mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
    mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

    mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"),
            FragmentStackSupport.CountingFragment.class, null);
    mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"),
            LoaderCursorSupport.CursorLoaderListFragment.class, null);
    mTabHost.addTab(mTabHost.newTabSpec("custom").setIndicator("Custom"),
            LoaderCustomSupport.AppListFragment.class, null);
    mTabHost.addTab(mTabHost.newTabSpec("throttle").setIndicator("Throttle"),
            LoaderThrottleSupport.ThrottledLoaderListFragment.class, null);
    }
}

其他回答

我认为当你有三到五个同样重要的屏幕时,一个合适的替代品是BottomNavigationActivity,这可以用来切换片段。

你会注意到Android Studio中存在一个向导,但要注意,因为Android Studio倾向于生成过于复杂的样板代码。

教程可以在这里找到: https://android.jlelse.eu/ultimate-guide-to-bottom-navigation-on-android-75e4efb8105f

另一个高质量的教程可以在Android Hive这里找到: https://www.androidhive.info/2017/12/android-working-with-bottom-navigation/

对于已弃用的ActionBar的“替换”,我将我的ActionBar类型变量的类型更改为PagerTabStrip,按照(注释中的旧代码):

// ActionBar bigActionBar;
PagerTabStrip bigActionBar;

~actionBar的.selectTab(tabindex)的“替换”是使用我相关的ViewPager的.setCurrentItem(int)方法,就像这样(注释中的旧代码):

/*
ActionBar.Tab eventTab = bigActionBar.getTabAt(2);
bigActionBar.selectTab(eventTab);
*/
mViewPager.setCurrentItem(2);

希望这对你有帮助。

我发现这些教程在一起的操作栏(现在的“工具栏”- argh),支持滑动标签与材料设计很有帮助:

https://www.youtube.com/watch?v=Fl0xMuo10yA

http://www.exoguru.com/android/material-design/navigation/android-sliding-tabs-with-material-design.html

你必须综合这些资源来匹配你的特定情况。例如,您可能不想手动创建与exoguru.com教程相同的样式的选项卡。

对于我来说,使用工具栏v7小部件appcompat来处理已弃用的导航工具栏。

    setSupportActionBar(toolbar);
    getSupportActionBar().setSubtitle("Feed Detail");
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //goToWhere
        }
    });

新的Android设计支持库增加了TabLayout,提供了一个与标签材料设计指南相匹配的标签实现。如何实现选项卡和ViewPager的完整攻防可以在这个视频中找到

现在已弃用:PagerTabStrip是支持库的一部分(已经有一段时间了),可作为直接替代品。如果你喜欢较新的谷歌播放风格选项卡,你可以使用PagerSlidingTabStrip库或修改任何谷歌提供的例子SlidingTabsBasic或SlidingTabsColors,如在这个Dev Bytes视频中所解释的。