我有一个活动,其中有一个片段,我试图在其中显示带有图片的网格视图。
如果我尝试访问片段的 onCreateView() 中的视图,我会得到一个非空处理程序并且一切正常:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.bar_pics_grid, container, false);
GridView gridview = (GridView) v.findViewById(R.id.gridview);
return v;
但是,由于我需要先从数据库中获取数据,所以我在自定义函数中访问了 gridview:
public void loadData(Bar bar) {
if (showBarDetails.getBar() != null) {
bar = showBarDetails.getBar();
GridView gridview = (GridView) getView().findViewById(R.id.gridview);
barImageArray = bar.getImages().toArray(new BarImage[bar.getImages().size()]);
gridview.setAdapter(new PicsAdapter(showBarDetails, barImageArray));
}
}
在后一种情况下,gridview 始终为空,这意味着此函数在 onCreateView 之前调用 - 任何想法为什么会发生这种情况?
我在活动的 onCreate 函数中初始化 Fragment,如下所示:
picsFragment = new PicsFragm(this);
然后我有一个 AsyncTask 从我调用的数据库中提取数据:
@Override
protected void onPostExecute(AsyncTaskResult<Bar> result) {
if (result.getError() == null) {
sbd.setBar(result.getResult());
if (sbd.getPicsFragment().isResumed())
sbd.getPicsFragment().loadData(sbd.getBar());
}
}
非常感谢