Дело в том что, до этого времени, я интерфейсы реализовывал в Activity
, значения методов задавал во Fragment
. То есть, в onAttach()
инициализировал, а потом где нужно вызвать метод интерфейса вызывал. Пример:
interface OnNumberChangeCallback{
void onSuccess();
}
И Во Fragment
:
OnNumberChangeCallback onNumberChangeCallback;
onAttach(Context context){
onNumberChangeCallback = (OnNumberChangeCallback) context;
}
и т.д.
Дело в том, что я хочу инициализировать интерфейс в BaseActivity
, и вызвать его метод. А во Fragment
реализовать этот интерфейс.
Когда пытаюсь инициализировать в onCreate
методе таким образом:
onNumberChangeCallback = (OnNumberChangeCallback) this;
то получаю ошибку:
BaseActivity cannot be cast to OnNumberChangeCallback
Вопрос: Как правильно инициализировать интерфейс в Activity
?
public class BaseActivity implements OnNumberChangeCallback
Нашел ответ, напишу, может кому поможет.
Реализуем наш интерфейс в MyFragment
public class MyFragment extends Fragment implements OnNumberChangeCallback {
@Override
public void onSuccess() {
// TODO
}
}
И в Activity
инициализируем, переопределив onAttachFragment(Fragment fragment)
;
public class MyActivity extends AppCompatActivity {
private OnNumberChangeCallback callback;
@Override
public void onAttachFragment(Fragment fragment) {
super.onAttachFragment(fragment);
if (fragment instanceof OnNumberChangeCallback) {
callback = (OnNumberChangeCallback) fragment;
}
}
}
И дальше, вызываем метод callback.onSuccess()
;
В книге "Философия java" Брюса Эккеля, в теме "Интерфейсы как средство адаптации" есть пример с паттерном "адаптер" для генерации вещественных...
В приложении на Android когда в фрагменте JournalFragment вызываешь контекстное меню у ListView lvJournal и выбераешь пункт Return преложение вызывает метод из фрагмента...
Как сделать, чтобы, если в поле на html страничке ввели правильный текст и нажали кнопку, то запускается скрипт? Хелп >~<
Есть сайт на wordpress, в котором установлена контактная форма contact form 7 с модулем внутри папки recaptchaphp, где есть такой код: