java - 在 Java 中,如何使用继承来简化我的代码? (安卓开发)

标签 java android oop

在各种 Activity 中我都有非常相似的方法。

例如:

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.ibHome:
        Intent menuIntent = new Intent(v.getContext(),Menu.class);
        startActivity(menuIntent);
        break;
    }

}

@Override
public void onClick(View v) {
     /**  */

    //
    switch(v.getId()){
        case R.id.bNew:
            Intent newSwimmerIntent = new Intent(v.getContext(),NewSwimmer.class);
            startActivity(newSwimmerIntent);
            break;
case R.id.ibHome:
            Intent menuIntent = new Intent(v.getContext(),Menu.class);
            startActivity(menuIntent);
            break;

有没有办法(我假设会使用继承)来防止在每个类中显式声明 menuIntent

谢谢。

最佳答案

您可以使用继承,但实际上这可能不是最佳选择,尤其是当两个 Activity 在“Is-A”关系中不直接相关时。

在这种情况下,您最好声明一个实现 OnClickListener 接口(interface)的新类。然后,您可以实例化该类并将其绑定(bind)到按钮的点击事件,无论它们在哪里使用。

这是一个例子:

public class HomeButtonHandler implements OnClickListener{

        @Override
        public void onClick(View v) {
            Intent menuIntent = new Intent(v.getContext(),Menu.class);
            v.getContext().startActivity(menuIntent);            

        }

    }

在您的 Activity 中,您只需将 HomeButtonHandler 绑定(bind)到按钮的 onClickListner 即可:

homeButton.setOnClickListener(new HomeButtonHandler());

关于java - 在 Java 中,如何使用继承来简化我的代码? (安卓开发),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8193910/

相关文章:

java - 自定义 View 日历(TableLayout)速度极慢

java - 在 spring mvc 应用程序中使用 bean 作用域的最佳实践

android - 工具栏不显示滑动刷新

android - Firebase:如何实时捕获数据

python - 如何使用 nosetests 分解 python 测试用例

c++ - c++ 中虚拟静态函数的替代方案?

java - 为什么hashmap split方法需要在loHead.treeify(tab)之前判断if(hiHead!=Null)

java - 是否可以在应用程序已运行的情况下从客户端生成对象/模型类

java - 在 Hibernate 中获取 JDBC 结果集

c# - 如何防止隐藏或覆盖公共(public)属性(property)