我有一个在 XML 中定义的 2 窗格视图。对于 xlarge,视图的左侧是处理内容选择的 Fragment。我想初始化此选择器ListFragment
以在应用启动时突出显示第一项。
我已经写了一个方法ListFragment
来做到这一点:
public void setSelectedItem (int position) {
//Unselect the previous item
if(mPreviousPosition != ListView.INVALID_POSITION) {
View oldSelected = getListView().getChildAt(mPreviousPosition);
oldSelected.setBackgroundResource(R.drawable.menu_button);
((ImageView) oldSelected.findViewById(R.id.selector_icon)).setImageDrawable(icons.getDrawable(mPreviousPosition));
((TextView) oldSelected.findViewById(R.id.selector_text)).setTextAppearance(getActivity(), R.style.text_selector);
}
//Select this item
View newSelected = getListView().getChildAt(position);
newSelected.setBackgroundResource(R.drawable.menu_button_active);
((ImageView) newSelected.findViewById(R.id.selector_icon)).setImageDrawable(icons_active.getDrawable(position));
((TextView) newSelected.findViewById(R.id.selector_text)).setTextAppearance(getActivity(), R.style.text_selector_active);
mPreviousPosition = position;
}
当我在选择一个项目后调用它时,它工作得很好。但是当我尝试在启动时突出显示第一项时,我在
newSelected.setBackgroundResource(R.drawable.menu_button_active);
它似乎getListView().getChildAt(position)
正在返回null
,因为尚未创建 Fragment 的视图。
那么,从我的 Activity 中的哪个位置尝试初始化ListFragment
? 我已经尝试过 onStart、onRestoreInstanceState 和 onResume,但它们都会产生 NPE。