2013-12-14 3 views
12

Может кто-нибудь объяснить, почему мой взгляд элемент (ListView) является null со следующим кодом:Butterknife Fragment Injecting Views не работает?

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 КОНФИГУРАЦИИ

Некоторые ИДЫ требуют дополнительной настройки для того, чтобы дать возможность обработки аннотаций.

IntelliJ IDEA - Если ваш проект использует внешнюю конфигурацию (например, Maven pom.xml), то обработка аннотации должна работать. Если нет, try manual configuration.

Eclipse — Set up manual configuration

Обычно это означает, что процессор аннотаций не делал свою работу. Это может быть связано с неправильной конфигурацией или случайными проблемами с IDE. По моему опыту, время от времени мне приходилось убирать проект и строить все снова.

+0

Да! Теперь он работает, спасибо. :) – Xarialon

+0

Не работает для меня = (Я выполнил шаги из ссылки для Eclipse, но с шага №4 «Убедитесь, что .apt_generated/folder находится в корне вашего проекта». _ - Я не вижу ни одной папки с именем '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); 
... 
Смежные вопросы