嗨,我要说我有一项活动
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类中
答案 0 :(得分:1)
为此创建一个监听器。
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主题,......
挂钩到类之外的视图事件是一个糟糕的设计模式。
查看使用包含ViewModels和LiveData的Mvvm模式的Android Architecture Components,以便在配置更改后继续使用。
如果您是Android新用户,我强烈建议您查看https://developer.android.com/topic/libraries/architecture/index.html以正确设计您的应用。您也可以开始使用Kotlin,因为它将来是android的维护语言。