2013-12-14 9 views
12

Qualcuno può spiegare perché la mia vista elemento (ListView) è null con il seguente codice:Butterknife Framment Injecting Views non funziona?

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?"); 
     } 
    } 
} 

sto facendo qualcosa di sbagliato o c'è qualcosa che non va con la biblioteca, perché ho incollato il codice di esempio per la mia app per farlo funzionare, ma non funziona qui ... Qualsiasi aiuto è molto apprezzato!

risposta

12

Avete impostato il vostro IDE?

IDE CONFIGURAZIONE

Alcuni IDE richiedono ulteriore configurazione per consentire elaborazione annotazione.

IntelliJ IDEA - Se il progetto utilizza una configurazione esterna (come un Maven pom.xml), l'elaborazione delle annotazioni dovrebbe funzionare. In caso contrario, try manual configuration.

Eclipse — Set up manual configuration

Di solito questo significa che il processore di annotazione non ha fatto il suo lavoro. Ciò potrebbe essere dovuto a errori di configurazione o problemi casuali con l'IDE. Nella mia esperienza, ogni tanto ho dovuto pulire il progetto e ricostruire tutto di nuovo.

+0

Yeah! Funziona adesso, grazie. :) – Xarialon

+0

Non funziona per me = (Ho seguito i passaggi dal link per Eclipse, ma dal punto 4 _ "Accertati che la cartella .apt_generated sia nella root del progetto." _ - Non vedo alcuna cartella denominata 'apt-generated' nella mia root del progetto e gli errori non scompaiono. – Solace

0

questo lavoro per me:

... 

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