gpt4 book ai didi

android - 不要重复菜单代码

转载 作者:搜寻专家 更新时间:2023-11-01 08:04:50 25 4
gpt4 key购买 nike

我希望我的所有 Activity 都只有一个菜单。我不想在所有 Activity 中重复我的菜单代码(如下)。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.referent, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.action_settings:
System.out.println("set");
return true;
case R.id.action_alert:
System.out.println("alert");
return true;
default:
return super.onOptionsItemSelected(item);
}
}

我阅读了一些主题,但我发现只有一个解决方案是扩展声明菜单的父类。我不能使用这个解决方案,因为我所有的 Activity 都没有扩展 Activity,我还有 FragmentActivityListActivity

是否有一种解决方案可以在每个 Activity 上使用相同的菜单,并在每个 Activity 上编写最少的代码?

最佳答案

根据菜单处理代码需要从当前 Activity 访问的内容,您可以创建一个类,其唯一职责是处理选定的菜单项。甚至可能只使用一个接收 MenuItem 的静态方法。

例如,修改 Activity ,使 onOptionsItemSelected 为:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
boolean handled = MenuHandler.onOptionsItemSelected(item);
if (!handled) {
handled = super.onOptionsItemSelected(item);
}
return handled;
}

并创建 MenuHandler 类:

public class MenuHandler {
public static boolean onOptionsItemSelected(MenuItem item)
{
// Handle item selection
switch (item.getItemId()) {
case 1: //R.id.action_settings:
System.out.println("set");
return true;
case 2: //R.id.action_alert:
System.out.println("alert");
return true;
default:
return false; //allow default processing
}
}
}

关于android - 不要重复菜单代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15775831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com