Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将@override方法从活动重写到另一个类中_Java_Android - Fatal编程技术网

Java 如何将@override方法从活动重写到另一个类中

Java 如何将@override方法从活动重写到另一个类中,java,android,Java,Android,嗨,假设我有一个活动 class AcitivityA { @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Do something } } 我有一个类名 class myClass { private Activity current_

嗨,假设我有一个活动

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;
    }
}
所以我的问题是,有没有一种方法可以覆盖OnConfiguration Changed并将其放入我的类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();
}
请注意,接口应该在其他地方是静态的,而不是自己的活动,否则它可能会被活动破坏

但有一些更好的方法可以解决这个问题。广播接收器、深度链接、扩展、LiveData(Livecycle感知)、RxJava主题

在一个不用于此目的的类之外钩住视图事件是一种糟糕的设计模式

看一看哪种使用Mvvm模式(包括ViewModels和LiveData)来应对配置更改


如果你是Android新手,我强烈建议你看看你的应用程序是否设计得当。您也可以开始使用Kotlin,因为它将是android未来的维护语言。

使用“AcitivityA”扩展“myClass”,让您的
ActivityA
实例从
OnConfiguration Changed()在您的
myClass
实例上调用一个方法
活动a中的方法。有没有一种方法不需要添加界面sir?因为我的活动是动态的,因为它将是服务中类的当前活动。是的,请使用适当的设计模式。AAC/MVVM设计为具有生命周期意识(并且在配置更改后仍然有效)