2015-12-11 1 views
24

Я использую Butterknife в первый раз, но что-то не так. У меня есть фрагмент и Listview и TextView только для тестирования, но обыкновение нож для масла связать свои переменные:Android Butterknife - привязка во фрагменте

public class MyFragment extends Fragment { 

    @Bind(R.id.resultListView) ListView resultList; 

    @Bind(R.id.textView1) TextView test; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_my, container, false); 
     ButterKnife.bind(this, view); 
     System.out.println(resultList); //null 
     System.out.println(view.findViewById(R.id.resultListView)); //works 
     System.out.println(test); //null 
     System.out.println(view.findViewById(R.id.textView1)); //works 
     return view; 
    } 

} 

Нет исключений или что-нибудь. Ручная привязка работает, поэтому мои представления должны быть там.

+0

Что ваши зависимости выглядеть? –

+0

Я просто включил батончик. – breakline

+0

ahh, так вы используете eclipse? –

ответ

11

Кодекс, который выглядит просто отлично. Так на основе комментариев, похоже, вам нужно настроить обработку аннотаций в Eclipse: http://jakewharton.github.io/butterknife/ide-eclipse.html

+0

Спасибо, это сделано, но интересно, что сгенерированная папка пуста. Я этого не видел, но я думаю, что это имеет какое-то отношение к этому? – breakline

+0

Что делать, если вы делаете чистую сборку? –

+0

То же самое. Я предполагаю, что обработчик аннотации никогда не вызван? – breakline

24

Эта работа для меня:

Gradle

compile 'com.jakewharton:butterknife:8.6.0' 
annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0' 

Код

. 
... 

@BindView(R.id.text_input) 
TextView text_input; 

@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); 

    text_input.setText("Lorem Ipsum"); 
... 
. 
+2

благодарит свою работу за меня –

4

также Не забудьте освободить, когда вы закончите:

private Unbinder unbinder; 

...

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.finalisation_step_fragment, container, false); 
     unbinder = ButterKnife.bind(this, v); 
     //initialize your UI 

     return v; 
    } 

...

@Override public void onDestroyView() { 
     super.onDestroyView(); 
     unbinder.unbind(); 
    }