Android – 为什么这告诉我“内容视图尚未创build”?

这是从数据库中填充一个片段的列表视图:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { LinearLayout Layout5 = (LinearLayout) inflater.inflate(R.layout.tab_frag5_layout, container, false); Cursor allBands; MyDatabase db; Context ctx = (Context)TabFragment5.this.getActivity(); db = new MyDatabase(ctx); allBands = db.getBands(); ListAdapter adapter = new SimpleCursorAdapter (ctx, R.layout.listelement, allBands, new String[] {"BandName"}, new int[] {R.id.text15}); getListView().setAdapter(adapter); return Layout5; } 

为什么这给了我“内容视图尚未创build”在logcat上? 当片段打开时程序强制closures…

Solutions Collecting From Web of "Android – 为什么这告诉我“内容视图尚未创build”?"

我通过将适配器和getListview移动到onActivityCreated(…)来解决这个问题。

onCreateView只是膨胀并返回布局。

一个Fragment通常应该放在一个ActivityonCreateView()会将Fragment的布局分配给它的容器Activity

引自http://developer.android.com/guide/topics/fundamentals/fragments.html

片段通常用作活动用户界面的一部分,并将其自己的布局贡献给活动。

所以,这个问题可能是由你的容器ActivitysetContentView()而不是你的Fragment

我有同样的问题,但我的错是通过一个接口从后台任务调用(不可见)片段。 所以不可见的片段试图使用它的视图是不可用的…我用相同的解决scheme修复它:接口函数检查是否片段isVisible()。 谢谢你给我指出正确的方向

  public void updateListInterface(){ if(this.isVisible()) { this.initListAdapter(); getLoaderManager().restartLoader(0, null, this); } else { Log.v(TAG, "view is not visible"); } }