如何覆盖@override从活动的方法到另一个类
嗨,让我们说,我有一个活动如何覆盖@override从活动的方法到另一个类
class AcitivityA {
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Do something
}
}
而且我有一个类名
class myClass {
private Activity current_activity;
myClass(Activity activity) {
current_activity = activity;
}
}
所以我的问题是,是否有办法我可以重写onConfigurationChanged并将其放入我的类myClass?
所以我的目标是,我想检测如果方向是改变
但我希望它是里面的类myClass的
创建的监听器。
public interface OnChange() {
void changed();
}
public class ListenerHolder {
public static OnChange onChange = new OnChange(...);
}
MyClass mClass = new MyClass();
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
ListenerHolder.onChange.changed();
}
注意界面在其他地方应该是静态的,否则它可能会被活动破坏。
但是有几种更好的方法可以解决这个问题。 BroadcastReceivers,Deeplinking,Extending,LiveData(Livecycle-aware),RxJava主题,...
这是一种糟糕的设计模式,它钩在视图事件之外的类中。
看看Android Architecture Components,它使用包括ViewModels和LiveData的Mvvm模式来保存配置更改。
如果您是Android新手,我强烈建议您查看https://developer.android.com/topic/libraries/architecture/index.html以了解适当的应用设计。你也可以开始使用Kotlin,因为它将成为未来Android的维护语言。
有没有需要添加接口的方法先生? 因为我的活动是动态的,因为它将成为当前活动活动 顺便说一句服务中的类 – Beginner
是的,请使用适当的设计模式。 AAC/MVVM被设计为具有生命周期感知能力(并且在配置更改时也可以生存) –
用'AcitivityA'扩展'myClass' –
让'ActivityA'实例从'ActivityA'的'onConfigurationChanged()'方法调用myClass'实例的方法。 – CommonsWare