【问题标题】:Manipulating ActionBar from Fragment从 Fragment 操作 ActionBar
【发布时间】:2014-06-09 13:48:05
【问题描述】:

我想知道使用ActionBarFragment 操作的推荐方法是什么。

我的应用程序中的一般导航是使用NavigationDrawer。然而,一个片段显示了音乐专辑,我想使用导航下拉菜单按流派过滤专辑。这是正确的方法吗? 我应该如何在ActionBar's 下拉列表中填充流派?我应该在Activity 还是Fragment 中进行?

【问题讨论】:

    标签: android android-fragments android-actionbar navigation-drawer


    【解决方案1】:

    ActionBar 始终存在于 Activity 中,需要从这里控制/填充。

    由于您使用的是片段,因此您应该使用 Activity 中的 AB 生命周期方法 (onCreateOptionsMenu() ) 来更改 AB 项,当您在片段之间切换时(同样这是在您的 Activity 中完成的,所以您已经在制作 Fragment更改,并且只需要同时进行 AB 更改)。

    我确实认为您正在描述 NavDrawer、AB 和 Fragment 使用的正确用例 - 将内容片段的过滤条件放在 AB 中是合适的。

    【讨论】:

    • 好的,所以为了澄清。我应该在 Activity 或 Fragment 的 onCreateOptionsMenu() 中填充过滤器吗?如果在fragment中,退出fragment时如何关闭下拉导航?
    • 你需要在Activity中完成
    【解决方案2】:

    您可以在资源文件中创建一个字符串数组,其中列出了流派。这些都在资源标签内。

    <string-array name="genres">
    <item>music_Genre1</item>
    <item>music_Genre2</item>
    .....
    </string-array>
    

    然后将此添加到微调器的实例中

    Spinner spinner = (Spinner) findViewById(R.id.your_View);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
        R.array.genres, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    

    或者如果数组已经在 onCreateOptionsMenu() 中创建,我相信它就在那里,它应该有一个字符串数组,那里有字符串资源(@string/dropdown_item),你可以在那里添加更多,当然,添加和更改资源文件中的字符串名称。然后使用 onItemSelected 方法与下拉菜单进行交互。

    【讨论】:

    • 谢谢,但我知道如何填充下拉导航。不知道是从 Fragment 还是从 Activity 做?
    • 您应该在活动中进行。这并不是说你不能在 Fragment 中,但几乎总是在 Activity 中完成
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    相关资源
    最近更新 更多