2017-10-20 68 views
0

嗨,让我们说,我有一个活动如何覆盖@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的

+0

用'AcitivityA'扩展'myClass' –

+0

让'ActivityA'实例从'ActivityA'的'onConfigurationChanged()'方法调用myClass'实例的方法。 – CommonsWare

回答

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主题,...

这是一种糟糕的设计模式,它钩在视图事件之外的类中。

看看Android Architecture Components,它使用包括ViewModels和LiveData的Mvvm模式来保存配置更改。

如果您是Android新手,我强烈建议您查看https://developer.android.com/topic/libraries/architecture/index.html以了解适当的应用设计。你也可以开始使用Kotlin,因为它将成为未来Android的维护语言。

+0

有没有需要添加接口的方法先生? 因为我的活动是动态的,因为它将成为当前活动活动 顺便说一句服务中的类 – Beginner

+0

是的,请使用适当的设计模式。 AAC/MVVM被设计为具有生命周期感知能力(并且在配置更改时也可以生存) –

相关问题