2017-10-20 79 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被設計爲具有生命週期感知能力(並且在配置更改時也可以生存) –

相關問題