gpt4 book ai didi

Android:如何在不重写重写方法的情况下在每个(列表) Activity 中都有一个共享菜单?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:33 25 4
gpt4 key购买 nike

我知道 Android 提供了一些有用的方法来重写以定义菜单:

    @Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, AIS, 0, "Activity Inventory Sheet").setIcon(android.R.drawable.ic_menu_upload);
// ...
return true;
}

public boolean onOptionsItemSelected(MenuItem item) {
Intent i;
switch (item.getItemId()) {
case AIS: i = new Intent(this, ActivityInventorySheet.class);
startActivity(i);
return true;
// ...
}
return false;
}

我想让我的 Android 应用程序的每个 Activity 和 ListActivity 共享这个菜单。这是为了在每个(列表) Activity 中都有一个标准菜单,使用户可以通过单击跳转到应用程序的每个部分。

目前,实现此目的最简单的方法是在应用程序的每个(列表) Activity 中复制并粘贴这两个方法。我不喜欢这种冗余的代码:)

子类化是一个合理的选择吗?我已经看到,对我的 ListActivity 之一进行子类化效果不是很好(从数据库检索对象的线程会产生问题)。还有其他方法可以通过 Activity 共享菜单吗?

谢谢

最佳答案

我使用带有静态方法的辅助类来初始化和处理公共(public)菜单选项,然后每个 Activity 定义自己的 onCreateOptionsMenu 等,将公共(public)任务委托(delegate)给辅助类,并可能添加更多菜单项特定于该 Activity 。

有点像

class SharedMenu {
public static void onCreateOptionsMenu(Menu menu) {
menu.add(...);
menu.add(...);
}
}

public class MyActivity extends Activity {

@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(...); // specific to this activity
SharedMenu.onCreateOptionsMenu(menu);
return true;
}

}

onMenuItemSelected 等有更多方法

编辑:我没有使用公共(public)基类,因为我需要其中两个开始,一个用于 Activity ,另一个用于列表 Activity ,然后在我的例子中,我需要在一些上添加自定义菜单选项 Activity 。

关于Android:如何在不重写重写方法的情况下在每个(列表) Activity 中都有一个共享菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2006457/

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