Как унаследовать одну и ту же реализацию функции переопределения во всех моих действиях? - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь реализовать метод переопределения во всех действиях в моем приложении. Этот метод переопределения происходит из класса app.Activity. Вместо того, чтобы переопределять этот метод и реализовывать один и тот же точный код в каждом отдельном действии один за другим, есть ли способ абстрагировать этот метод и применить его к каждому действию посредством наследования?

Ответы [ 3 ]

1 голос
/ 21 марта 2019

Обычно при создании действия оно наследуется от одного из предоставленных системой классов действий.Вот что подразумевается под ключевым словом "extends" в объявлении класса.Делая это, вы получаете возможность использовать все компоненты системного класса деятельности как есть и переопределять методы, которые вы хотите настроить.Но это ничего не меняет в базовом классе;только ваш новый класс активности (и его потомки) будут иметь эти изменения.

Если вы хотите иметь одинаковое переопределение во всех ваших классах активности, вы сначала захотите создать минимальный промежуточный класс активности, который расширяетсистемный класс активности и переопределяет только те методы, которые вы хотите настроить.Затем используйте этот новый класс в качестве родительского для всех ваших классов полной активности.Каждый из них будет затем автоматически использовать переопределенные методы.

Тем не менее, что вы пытаетесь переопределить?Если вы просто пытаетесь изменить что-то, относящееся к внешнему виду, существуют существующие способы сделать это с помощью тем / стилей.

0 голосов
/ 21 марта 2019

Вам нужно создать класс с методом, который вы хотите переопределить. Затем наследуйте этот класс (который будет вашим родительским классом) в каждом классе, в котором вам нужен этот метод. Без повторной записи вы сможете получить доступ к методу родительского класса.

class AClass(){
      fun methodToOverride(){}
}

class BClass(): AClass(){
      override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        methodToOverride()
      }
}
0 голосов
/ 21 марта 2019

Основой наследования является то, что унаследованный класс может сохранять или перезаписывать методы родительского класса.В вашем примере это будет так же просто, как

class MasterActivity extends Activity {
    public onStart() { // example
        super.onStart();
        // do something 
    }
}

class SomeActivity extends MasterActivity {
    // does the same in onStart
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...