【问题标题】:Filter menu with items varying according to the value of a variable过滤器菜单的项目根据变量的值而变化
【发布时间】:2013-03-19 06:53:43
【问题描述】:

我正在开发一个应用程序,其目的是根据单击的按钮在列表视图中显示数据库中的一些内容。它是这样工作的:我有一个带有 9 个不同按钮的主要活动(例如:“餐厅”“快餐”“咖啡店”等),每次用户单击其中一个按钮时,它都会打开一个相同的活动(称为ResultListViewActivity),但每次都有不同的内容(餐馆列表、快餐等)。
因此,只有一个活动可以显示内容,但列表视图本身的内容会根据单击的按钮而有所不同。

现在可以了,我想在我的 ResultListViewActivity 中添加一个过滤器菜单,以便为用户添加更多选项。问题是,这个菜单应该根据点击的按钮不同。例如,如果用户在 Main Activity 中单击“Restaurants”,它应该打开 ResultListViewActivity,其中包含“亚洲美食”、“法国美食”等项目的菜单,但如果他单击咖啡店,它将是“茶馆”“咖啡厅”等,每个项目都有特定的方法。

这是我组织此代码的想法:

这个想法是有一个名为 myVariable 的变量,在单击按钮时设置其值(例如:您单击 button1,myVariable=1),将此变量发送到我的 ResultListViewActivity,然后用“如果" 句子。
在每种情况下,我都会将项目添加到我的菜单中并定义这些项目应该做什么。

我的问题是:我认为这应该可行,但我也知道可能需要做一些更直接或更轻松的事情来避免编写 9 种情况。我愿意按照上面解释的方式编写我的代码,但我担心我的 android 初学者水平让我无法知道一些更有效的方法来做到这一点。

ps:要访问项目,我可能会从我的操作栏中使用一个名为“过滤器”的子菜单,如果不可能的话,我可能会使用微调器(我的屏幕底部已经有一个操作栏,不确定我是否可以拥有另一个在上面)。

【问题讨论】:

  • 你的意思是菜单和onCreateOptionsMenu一样
  • 其实我猜不一定,它也可以是一个微调器或任何不占用太多空间的东西,并且可以通过单击它来显示更长的项目列表。虽然理想情况下使用 onCreateOptionsMenu 可能会更好,但由于我已经在使用一个在我的完整应用程序中保持不变的操作栏,我不知道我是否可以再次使用它。

标签: android android-intent android-actionbar android-spinner android-menu


【解决方案1】:

您可以创建 9 种不同的菜单并将其中一种添加到 myVariable。假设 myVariable 是一个整数,那么

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    switch (myVariable)
    {
        case 1: 
            getMenuInflater().inflate(R.menu.activity_restaurant, menu);
            break;

        case 2:
            ........

        .....
    }

    return super.onCreateOptionsMenu(menu);
}

【讨论】:

  • 谢谢,我刚试过,结果令人鼓舞!我可以根据单击的按钮显示不同的菜单列表。您知道是否可以通过屏幕顶部的图标和弹出菜单而不是现在的方式访问此菜单(点击手机的菜单按钮)?
  • 如果你的应用 target sdk >= 11 为什么它不会出现在操作栏上?你想把它放在操作栏上吗?
  • 我希望它在操作栏上,但在我的屏幕顶部。右上角有一个名为“过滤器”的图标,当我单击它时,它会打开一个弹出菜单,其中包含上面定义的内容。到目前为止,我认为它在“菜单按钮”上,因为默认情况下它在那里。如果我的设备上没有这样的按钮,我想它会转到操作栏。
猜你喜欢
  • 2019-01-25
  • 2013-10-17
  • 1970-01-01
  • 2021-05-04
  • 2018-06-11
  • 1970-01-01
  • 2017-09-22
  • 2017-03-15
  • 1970-01-01
相关资源
最近更新 更多