Я работаю в телевизионном приложении Android с MainFragment
, которая простирается BrowseFragment
, а иногда он выходит из строя в методе onFocusSearch(View focused, int direction)
, определенной для mOnFocusSearchListener
в BrowseFragment
:NullPointerException on onFocusSearch в BrowseFragment?
private final BrowseFrameLayout.OnFocusSearchListener mOnFocusSearchListener =
new BrowseFrameLayout.OnFocusSearchListener() {
@Override
public View onFocusSearch(View focused, int direction) {
// if headers is running transition, focus stays
if (mCanShowHeaders && isInHeadersTransition()) {
return focused;
}
if (DEBUG) Log.v(TAG, "onFocusSearch focused " + focused + " + direction " + direction);
if (getTitleView() != null && focused != getTitleView() &&
direction == View.FOCUS_UP) {
return getTitleView();
}
if (getTitleView() != null && getTitleView().hasFocus() &&
direction == View.FOCUS_DOWN) {
return mCanShowHeaders && mShowingHeaders ?
mHeadersFragment.getVerticalGridView() :
mMainFragment.getView();
}
boolean isRtl = ViewCompat.getLayoutDirection(focused) == View.LAYOUT_DIRECTION_RTL;
int towardStart = isRtl ? View.FOCUS_RIGHT : View.FOCUS_LEFT;
int towardEnd = isRtl ? View.FOCUS_LEFT : View.FOCUS_RIGHT;
if (mCanShowHeaders && direction == towardStart) {
if (isVerticalScrolling() || mShowingHeaders) {
return focused;
}
return mHeadersFragment.getVerticalGridView();
} else if (direction == towardEnd) {
if (isVerticalScrolling()) {
return focused;
}
return mMainFragment.getView(); //*****CRASH******
} else {
return null;
}
}
};
Примечание: линия, где происходит сбой отмечен //*****CRASH******
, Эта авария не всегда появляется, но когда она говорит, что mMainFragment
is null
...
Не удается найти неисправность. Помогите!
Обновление библиотеки постбакса, поможет?
Не хранить ссылки на фрагменты, попытаться получить их от 'FragmentManager'. – Titus