2013-12-14 54 views
12

任何人都可以解释为什么我的视图元素(ListView控件)是null用下面的代码:Butterknife片段注入视图不工作?

public class NewsFragment extends Fragment { 

    @InjectView(R.id.news_listView) ListView lv; 

    @Override 
    public View onCreateView(LayoutInflater inflater, 
          ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.news_layout, container, false); 
     ButterKnife.inject(this, view); 
     return view; 
    } 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     if (lv == null) { 
      UIHelper.showAlert("null?"); 
     } 
    } 
} 

难道我做错了什么或有与库不对劲,因为我粘贴示例代码到我的应用程序让它工作,但它不在这里工作...任何帮助非常感谢!

回答

12

您是否设置了IDE?

IDE CONFIGURATION

有些IDE需要为了使 注释处理其他配置。

IntelliJ IDEA - 如果您的项目使用外部配置(如 Maven pom.xml),则注释处理应该正常工作。否则, try manual configuration

Eclipse — Set up manual configuration

通常这意味着注解处理器并没有这样做其工作。这可能是由于IDE配置错误或随机问题。根据我的经验,我不时需要清理项目并重新构建一切。

+0

呀!现在正在工作,谢谢。 :) – Xarialon

+0

不适用于我=(我遵循Eclipse链接中的步骤,但来自步骤#4 _“请确保.apt_generated /文件夹位于您的项目根目录中。”_ - 我没有看到任何名为的文件夹在我的项目根目录中有'apt-generated',并且错误不会消失。 – Solace

0

这项工作对我来说:

... 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_home, container, false); 
    ButterKnife.bind(this, view); 
    return view; 
} 

@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
...