簡體   English   中英

如何將@override方法從活動覆蓋到另一個類

[英]How to override @override method from activity into another class

嗨,假設我有活動

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

請注意,接口應該在自己的活動之外的其他地方是靜態的,否則可能會被該活動破壞。

但是有一些更好的方法可以解決這個問題。 廣播接收器,深層鏈接,擴展,LiveData(可感知Livecycle的),RxJava主題,...

將類之外的視圖事件掛接到未用於該類的視圖中是一種不良的設計模式。

看一下使用Mvvm模式(包括ViewModels和LiveData)以保留配置更改的Android體系結構組件

如果您是Android的新手,我強烈建議您訪問https://developer.android.com/topic/libraries/architecture/index.html ,以正確設計應用程序。 您也可能會開始使用Kotlin,因為它將成為Android將來的維護語言。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM