私はBrowseFragment
を拡張し、時にはそれがBrowseFragment
にmOnFocusSearchListener
のために定義された方法onFocusSearch(View focused, int direction)
にクラッシュしMainFragment
とAndroidのテレビアプリで働いている:BrowseFragmentのonFocusSearchでNullPointerExceptionが発生しましたか?
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
はnull
...
問題が見つかりません。助けて!
leanbackライブラリを更新すると役立ちますか?
'FragmentManager'からそれらを取得しようと、フラグメントへの参照を保持しないでください。 – Titus