web-dev-qa-db-ja.com

ビューを挿入するバターナイフフラグメントが機能しませんか?

私のView要素(ListView)がnullである理由を、次のコードで誰かが説明できますか?

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
Xarialon

IDEをセットアップしましたか?

IDE構成

一部のIDEでは、注釈処理を有効にするために追加の構成が必要です。

IntelliJ IDEA —プロジェクトで外部構成(Maven pom.xmlなど)を使用している場合は、注釈処理が正常に機能するはずです。そうでない場合は、 手動構成を試してください

Eclipse —手動構成のセットアップ

通常、これは注釈プロセッサがその作業を行わなかったことを意味します。これは、IDEの設定ミスまたはランダムな問題が原因である可能性があります。私の経験では、時々、プロジェクトをクリーンアップして、すべてを再構築する必要がありました。

12
Pedro Loureiro

私のためのこの仕事:

...

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