getView()返回null

时间:2013-02-28 13:09:51

标签: android android-fragments

我basicall有一个AsyncTask(从主Activity运行),填充片段内的ViewPager。我正在膨胀xml布局文件以填充ViewPager

问题是我无法获得指向布局(imageview,textview)内部视图的指针,以便我可以在运行时更改。我知道这可能是因为getView()返回null。我读过这可能是因为onCreateView()尚未被调用。有人知道我能做些什么来解决这个问题吗?


我的代码现在有点混乱。

以下是对我正在做的事情的简单解释:

  1. MainActivity Asynctask填充数据库并将指针发送到Fragment。像SendToFragement(db);
  2. 之类的东西
  3. Fragment方法ReceiveFromActivity(db)接收数据库指针并填充ViewPager。
  4. 如果我只是创建TextView,设置文本以及将TextView添加到Viewpager,它可以正常工作。但是,当然,我想让它看起来更好,所以我已经膨胀了一个xml布局。问题是我无法更改xml布局的内容,因为getView()正在返回NULL,因此getView().findViewById()不起作用。

1 个答案:

答案 0 :(得分:7)

根据您的PagerAdapter的实现情况,不再可见的片段可能会销毁View以释放资源。因此,无需更新View,因为它将在onCreateView()中使用更新的信息再次创建。 getView()会在对onCreateView()onDestroyView()的调用之间返回一个视图。除此之外,Fragment仍然可以存在于内存中,但不会附加到任何View,因此getView()将返回null

基本上,

View fragmentView = getView();
if(fragmentView != null) {
  // we are in view or at least exist. Update the elements.
}
// Else don't worry about it. Just update the data.