У меня есть действие, которое содержит фрагмент, и этот фрагмент воспроизводит видео на YouTube с помощью Android API YouTube, и я регистрирую прослушиватель событий для видео YouTube, когда он заканчивается.
На событии onVideoEnded
я получаю ссылку на действие, чтобы выполнить какое-то действие, и вот как я получаю действие внутри своего фрагмента:
private Activity theActivity;
@Override
public void onAttach(Context context) {
super.onAttach(context);
theActivity = (Activity) context;
}
/*
* Deprecated on API 23
* Use onAttachToContext instead
*/
@SuppressWarnings("deprecation")
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (Build.VERSION.SDK_INT < 23) {
theActivity = activity;
}
}
@Override
public void onDetach() {
super.onDetach();
theActivity = null;
}
protected Activity getTheActivity() {
Activity activity = getActivity();
if (activity != null)
return activity;
else return this.theActivity;
}
Как вы можете видеть на моем методе getTheActivity
, я сначала проверяю метод getActivity
, и если он возвращает нулевое значение, я получаю переменную, полученную из onAttach
при создании фрагмента.
Однако на таких устройствах, как samsung getTheActivity
, метод все равно возвращает ноль!
Я думаю, что это, вероятно, проблема с нехваткой памяти!
Как я могу получить ссылку на свою деятельность при любых обстоятельствах из моего фрагмента?