Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android上的干式选项菜单_Android_Android Menu - Fatal编程技术网

Android上的干式选项菜单

Android上的干式选项菜单,android,android-menu,Android,Android Menu,我正在学习为Android应用程序创建选项菜单 在菜单中,它有以下提示,用于保持菜单干燥: 提示:如果您的应用程序包含 多种活动和其中一些活动 提供相同的选项菜单, 考虑创建一个活动 除了 onCreateOptions菜单()和 onOptions ItemSelected()方法。然后 为每个活动扩展此类 它们应该有相同的选择 菜单。这样,你就必须管理好 只有一组代码用于处理菜单 操作和每个子类 继承菜单行为 这似乎有问题。如果需要共享相同选项的活动从不同的类继承,那么我的选项菜单活动应该从

我正在学习为Android应用程序创建选项菜单

在菜单中,它有以下提示,用于保持菜单干燥:

提示:如果您的应用程序包含 多种活动和其中一些活动 提供相同的选项菜单, 考虑创建一个活动 除了 onCreateOptions菜单()和 onOptions ItemSelected()方法。然后 为每个活动扩展此类 它们应该有相同的选择 菜单。这样,你就必须管理好 只有一组代码用于处理菜单 操作和每个子类 继承菜单行为


这似乎有问题。如果需要共享相同选项的
活动
从不同的类继承,那么我的
选项菜单活动
应该从哪些类继承?我读到Java不支持多重继承,那么如何解决这个问题呢?

具有选项菜单代码的活动应该扩展活动类

public class YourRootActivity extends Activity {

// Any other stuff that you want for all activities

 public boolean onCreateOptionsMenu(Menu menu){
 // your main options menu
 }
}
现在对于需要这个菜单的类,让它们扩展我们上面创建的活动

class Activity1 extends YourRootActivity {
}

如果您希望对子类中的选项菜单进行轻微修改,可以覆盖这些类中的onCreateOptions菜单方法。

我理解这种方法。但如果Activity1扩展Activity,Activity2扩展其他类,我该怎么办?Activity2不能扩展其他类。如果定义活动的子类,则必须扩展活动或活动的子类。Achie的答案是好的,这是Java的一个缺点,在大多数情况下,可以通过小心地实现类和使用接口来实现这些情况。但是在我们的例子中,因为我们不想编写所有Android的活动类,所以我们必须进行权衡。在上述情况下,我们可能需要扩展TabActivity或MapsActivity。在这些和任何类似的情况下,我们将不得不在各自的活动中再次实现选项菜单代码。这似乎是Android架构中的一个缺陷:如果我想将相同的选项应用于扩展不同类的活动,我必须重复我自己的话。这是绝对可能的,而且有可能同时拥有这两个选项如上所述,类扩展了自定义YourRootActivity。对于ListActivity,而不是扩展ListActivity,它可以只扩展普通活动,从代码中获取listview,并在该列表上设置listAdapter。如果你需要更多的解释,你可能需要为这个问题开始一个单独的线程。