java - 在所有 Activity android中导入常用功能

标签 java android inheritance

我正在开发一个顶部有菜单的 Android 应用程序(就像我们在网站上有的;主页、关于我们等)。此菜单在所有 Activity 中重复出现,因此我必须在所有 Activity 中重复这些代码。有没有一种方法可以让我在某个类中编写一次代码,然后在所有其他使用继承或其他 Activity 的 Activity 中重用它? (只是虱子在 php 中有 include 函数)。希望我的问题是直截了当的。这是我必须在所有地方重复的菜单代码。

// menu items
menu_home.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(CurrentActivity.this, HomeActivity.class);
startActivity(i);
}
});
menu_help.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(CurrentActivity.this, HelpActivity.class);
startActivity(i);
}
});
menu_media.setOnClickListener(new OnClickListener() {;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(CurrentActivity.this, MediaActivity.class);
startActivity(i);
}
});
menu_index.setOnClickListener(new OnClickListener() {;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(HomeActivity.this, IndexActivity.class);
startActivity(i);
}
});

enter image description here

最佳答案

I have to repeat the code for these in all activities.

Java 不支持多重继承。

不要仅仅为了代码重用而使用继承。如果没有 is a 关系,则使用组合进行代码重用。如果修改了父类(super class),过度使用实现继承(又名 extends)可能会破坏所有子类。

enter image description here

在你的情况下,我会使用组合。只需创建实现上述监听器逻辑的新类。

关于java - 在所有 Activity android中导入常用功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19443371/

相关文章:

php - 从两个父类继承

ruby - Ruby 子类实例变量可以_overwrite_ 父类(super class)的(同名)吗?

java - 如何将 javax.ws.rs.core.Feature 与 CXF 一起使用?

java - Perl 到 Java 的翻译

java - 使用 Microsoft Graph SDK for java 将包含元数据的大文件上传到 SharePoint

android - 在 fragment 之间传递对象

swift 继承 : Super's Super

Java反射: internals of java. lang.reflect.Field.getDouble(object)

android - MyObjectBox 不是在 kotlin 中生成的(objectbox 库)

可绘制图层列表中的 Android 文本