2016-05-17 7 views
2

これは非常に奇妙な動作であり、基本的にはButterknifeである理由を理解できません。ビューはまったくありません。コードの下に参照してください。バターナイフは私のAndroidアプリケーションではまったく動作しません

これはフラグメントです:

@BindView(R.id.share_detail_swipe) 
public SMSwipeRefreshLayout view1; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.view_share_details, container, false); 

    ButterKnife.bind(this, view); 

    return view; 
} 

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    view1.setRefreshing(true); // NPE here 
} 

非常に簡単なコード!しかし、私がアプリケーションを起動した場合、NullPointerExceptionview1であると不都合があり、それはであり、NULLはです。 API Docが私に指示するものを正確にやっているので、これは非常にイライラしています。

ここで起こっていることについて誰でも手掛かりがありますか?以下はview_share_details.xmlです:

<com.*.presentation.view.smwidget.SMSwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/share_detail_swipe" 
tools:context="com.*.fragment.ShareDetailsFragment" 
> 

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <ImageView 
      android:id="@+id/detail_share_thumbnail" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/detail_share_name_tv" 
      /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/detail_share_username_tv" 
      /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/detail_share_date_tv" 
      /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/detail_share_description_tv" 
      /> 
    </LinearLayout> 

</ScrollView> 

</com.*.presentation.view.smwidget.SMSwipeRefreshLayout> 

そしてlogcat出力:

FATAL EXCEPTION: main 
Process: com.joelmin.sharemon, PID: 4981 
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.*.presentation.view.smwidget.SMSwipeRefreshLayout.setRefreshing(boolean)' on a null object reference 
    at com.joelmin.sharemon.presentation.fragment.ShareDetailsFragment.showRefreshing(ShareDetailsFragment.java:83) 
    at com.joelmin.sharemon.presentation.presenter.ShareDetailsPresenter.fetchShare(ShareDetailsPresenter.java:25) 
    at com.joelmin.sharemon.presentation.fragment.ShareDetailsFragment.onViewCreated(ShareDetailsFragment.java:102) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) 
    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742) 
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) 
    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:145) 
    at android.app.ActivityThread.main(ActivityThread.java:6843) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 
+0

はあなたview_share_detailsのレイアウトを提供でした 'com.neenbedankt.android-APT' をxml、またあなたのアプリのbuild.gradleファイル? – Seishin

+0

ここにあなたのXMLファイルコードを投稿してください – Bhargav

+0

ちょっとしました、それを確認してください –

答えて

2

次のようにあなたはButterknifeライブラリを追加する必要があります

あなたの依存関係に追加する必要があります。 がち " com.jakewharton:butterknife-コンパイラ:8.0.1 '

も適用するプラグイン怒鳴る置くために: 'com.android.application': プラグインを適用します。

https://github.com/JakeWharton/butterknife

+1

これは完璧です、感謝の青山さんは素敵な一日を持っています:) –

+2

よろしくお願いします!私は一日中、何が間違っているのか疑問に思いました...あなたのように。 :) libの新しいバージョンがリリースされたときに、ドキュメントをもっと慎重に読んでください。 – Seishin

+0

私は2017年3月に同じ問題を抱えていました。セットアップの要件が再び変わり、さまざまなオンラインガイドからButterKnifeを使用しようとしていました。この回答とコメントを読んだ後、私はバターナイフのウェブサイトに行き、現行の指示に合わせて自分のアプリを変更しました。 'apply plugin:'行、 'dependencies {classpath ...}'行も削除する必要がありました。最後に、私は現在の8.5.1バージョンに変更し、すべて正常に動作しました。 Seishinが言ったように、私はちょうど現在のバージョンのドキュメントを読んでそれに応じて設定する必要がありました。 – Tequilaman

関連する問題