gpt4 book ai didi

java - 如何将 @override 方法从 Activity 重写到另一个类中

转载 作者:行者123 更新时间:2023-12-02 12:06:50 25 4
gpt4 key购买 nike

嗨,假设我有一个 Activity

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();
}

请注意,接口(interface)在其他地方应该是静态的,而不是自己的 Activity ,否则它可能会随着 Activity 而被破坏。

但是有一些更好的方法可以解决这个问题。 BroadcastReceivers、深度链接、扩展、LiveData(生命周期感知)、RxJava 主题,...

在不用于此目的的类之外 Hook View 事件是一种糟糕的设计模式。

看看Android Architecture Components它使用包含 ViewModel 和 LiveData 的 Mvvm 模式来应对配置更改。

如果您是 Android 新手,我强烈建议您查看 https://developer.android.com/topic/libraries/architecture/index.html以便正确设计您的应用程序。您也可以开始使用 Kotlin,因为它将成为 Android future 维护的语言。

关于java - 如何将 @override 方法从 Activity 重写到另一个类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46846823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com