java - 在基类中结合 fragment 和 Activity 类

标签 java android oop android-fragments

我有 2 个类:

public class MyFragment extends Fragment implements MyListener
public void myFun1()
public void myFun2()
public void myFun23()

public class MyActivity extends AppCompatActivity implements MyListener
public void myFun1()
public void myFun2()
public void myFun34()

我试图将我的两个类合并到一个基类中,所以我只需要编写一次 myFun1()myFun2() 但问题是一个类扩展 Fragment 和一个类扩展 Activity。如何将这些函数集中在一个基类中?

编辑:这些方法不是来自监听器,可以忽略。 myFun1()myFun2() 具有相同的功能,而 myFun23()myFun34() 都有仅在同类产品中才需要的特殊功能

最佳答案

您只能使用在接口(interface)中引入default 方法的Java8
您可以定义如下内容:

public interface MyInterface {

    default void myFun1() {
         // default method implementation
    }

    default void myFun2() {
         // default method implementation
    }

}

然后:

   public class MyActivity extends AppCompatActivity implements MyListener, MyInterface {

     // Just define
     public void myFun23(){}
   }

   public class MyFragment extends Fragment implements MyListener, MyInterface {

     // Just define
     public void myFun34(){}
   }

您可以使用 kotlin 执行相同的操作。

interface MyInterface {
    fun myFun1() {
      // implementation
    }
    //...
}

然后:

class MainActivity : AppCompatActivity(), MyInterface {

    fun func23() {
       //...
    }
}

....

关于java - 在基类中结合 fragment 和 Activity 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57489529/

相关文章:

java - java多线程求和

android - 关于如何在 android 中流式传输 m3u8 视频的任何想法

android - 如何同时更改多个 Activity 的背景?

java - 静态方法继承和静态变量继承有何不同?

javascript - 如何扩展用匿名函数创建的对象原型(prototype)

java - Mongodb Java 驱动程序不断记录消息,如何禁用它?

java - 如何在 SaveAll() 之前关闭选择?

java - 如何使用 Retrofit 在 post 请求中发送多个 json 对象?

java - 有没有办法在 android studio/Java 上使用 .dae (collada) 文件?

PHP:用于错误处理的现代版本 "or die();"