在我的android应用中,生命周期启动并通过初始状态后,需要完成许多更新。
现在,我正在尝试添加一个选项,以允许用户禁用接收推送通知,并且我必须创建一个自定义的“侦听器”,这样它才能到达onCreate回调内部的方法,并且我注意到它不是我第一次这样做。
所以我想知道,是否有一种方法可以制作一些“抽象”接口,而不是为每个类实现一个新的侦听器(其中有数十个……)。
只是为了使自己更清楚,这是我的意思的伪代码:
interface X:
{
void onDoneFragment1();
void onDoneFragment2();
void onDoneFragment3();
...
}
然后
fragment 1:
..
x.setOnListenFragment1( new OnDoneFragment1(){
@Override
public onDoneFragment1(){
......
..
片段2和其他片段相同。
fragment 2:
..
x.setOnListenFragment2( new OnDoneFragment2(){
@Override
public onDoneFragment2(){
......
..
最佳答案
是的,您有两种选择:
1)只需用所有空白的impl创建一个抽象类。这样的方法
2)如果您使用RetroLambda将Java8语法支持添加到Java7,并通过与Android的关系添加。...,您可以创建an Interface with 'default' methods。
抽象类:
abstract class X:
{
// having this makes sure the person only uses a method they have 'overridden'
private Exception makeException(){
return new Exception("Called Method from abstract class that wasn't overridden");
}
void onDoneFragment1(){throw makeException();}
void onDoneFragment2(){throw makeException();}
void onDoneFragment3(){throw makeException();}
...
}
与“默认方法”接口
interface X:
{
// having this makes sure the person only uses a method they have 'overridden'
private Exception makeException(){
return new Exception("Called Method from abstract class that wasn't overridden");
}
default void onDoneFragment1(){throw makeException();}
default void onDoneFragment2(){throw makeException();}
default void onDoneFragment3(){throw makeException();}
...
}