如何将@override方法从活动覆盖到另一个类

时间:2017-10-20 10:06:40

标签: java android

嗨,我要说我有一项活动

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类中

1 个答案:

答案 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的维护语言。