Android java вызов функции из переменной

Рейтинг: -4Ответов: 2Опубликовано: 29.04.2015

Подскажите, как сохранить функцию в переменную, чтобы после была возможность её вызова?

Мне нужно обрабатывать кнопку "назад" в onBackPressed(). Хочу при смене layout указывать в переменной функцию, которая должна вызываться при нажатии кнопки "назад".

Это кажется самым простым вариантом. Есть другие варианты?

Ответы

▲ 5

Подмена ContentView в активити - плохая практика и ведет к большому количеству ненужных и порой невероятных костылей и еще более неправильных решений (есть считанное количество случаев , когда это оправдано , но случай в вопросе к ним не относится)

Существует прстое правило : одна активити - один контентвью , его надо сразу запомнить.
Если осилить фрагменты пока не удалось (хотя тут и использование фрагментов тоже сомнительно) , когда требуется другой экран , создавайте новую активити и вызывайте ее , а не подменяйте контентвью

Хотелось бы обратиться к сообществу не поощрять подобную практику, придумывая какие то сложные решения для проблем , которых вообще не должно появляться при правильной разработке и архитектуре приложения.

▲ 2

Положить функцию в переменную нельзя, как в C++ к примеру.

Но можно сделать следующее, создать интерфейс

private static interface MyInterface {
    public void doSomething();
}

И пару объектов которые имплементят этот интерфейс:

MyInterface myInterface1 = new MyInterface() {
    @Override
    public void doSomething() {
        //...
    }
};

MyInterface myInterface2 = new MyInterface() {
    @Override
    public void doSomething() {
        //...
    }
};

Положить нужный объект в переменную, и потом просто вызвать у него метод doSomething()