android - बटरकनीफ 8.0.1 काम नहीं कर रहा है




nullpointerexception butterknife (7)

मैं butterknife 8.0.1 का उपयोग कर रहा हूँ butterknife 8.0.1 , लेकिन एक nullpointerexception दिखाई दे रहा है।

यह लाइन मेरी बिल्ड.ग्रेड फ़ाइल पर है: compile 'com.jakewharton:butterknife:8.0.1'

यह मेरी Main Class: (मैंने ठीक से लिखा है)

import butterknife.BindView;
import butterknife.ButterKnife;

public class MainActivity extends BaseActivity {

    @BindView(R.id.MainScreenTextView) TextView mainText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ButterKnife.bind(this);

        **mainText.setText("Butter knife is working fine");**
    }

और यह MainActivity.xml :

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

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

    <TextView
        android:id="@+id/MainScreenTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="This is the Main Screen"
        android:textColor="#000000"
        android:background="#666666"
        android:padding="5dp"
        android:textSize="20dp"/>
</LinearLayout>

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/fab_margin"
    android:src="@android:drawable/ic_dialog_email" />


इस तरह build.gradle फ़ाइल पर Butterknife कॉन्फ़िगर करें,

compile("com.jakewharton:butterknife:8.5.1")
annotationProcessor "com.jakewharton:butterknife-compiler:8.5.1"

इससे मेरा काम बनता है।


जेकवर्टन से

हाँ उस प्लगइन की अब आवश्यकता नहीं है। आप पहले से ही 'बटरनाइफ़-कंपाइलर' विरूपण साक्ष्य के लिए एनोटेशनप्रोसेसर का उपयोग कर रहे हैं जो एंड्रॉइड ग्रैडल प्लगइन में अंतर्निहित है।

तब समाधान एप्ट क्लासपाथ 'com.neenbedankt.gradle.plugins: android-apt.13' को हटा देता है।


मेरे पास यह मुद्दा भी था, सिर्फ इसलिए कि मैंने एंड्रॉइड स्टूडियो के डिपेंडेंसी प्रबंधन से तितलियों को जोड़ा है न कि बटरकॉइन वेबसाइट से कॉपी-पेस्टिंग ग्रेडल लाइनों द्वारा। इसलिए मुझे compile 'com.jakewharton:butterknife:8.5.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1' को केवल compile 'com.jakewharton:butterknife:8.5.1'


मेरे लिए समस्या यह थी कि मैं उपयोग कर रहा था

annotationProcessor 'com.jakewharton:butterknife-compiler:8.7.0'

के बजाय

 apt 'com.jakewharton:butterknife-compiler:8.7.0

यदि आप कोटलिन का उपयोग करते हैं:

मॉड्यूल ऐप में इस निर्भरता का उपयोग करना सुनिश्चित करें:

dependencies {
   implementation 'com.jakewharton:butterknife:10.0.0'
   kapt 'com.jakewharton:butterknife-compiler:10.0.0'
}

रीडमी के अनुसार , आपको अपने आप उत्पन्न होने वाले कोड के लिए butterknife-compiler को शामिल करना होगा:

buildscript {
  repositories {
    mavenCentral()
   }
  dependencies {
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
  }
}

apply plugin: 'com.neenbedankt.android-apt'

dependencies {
  compile 'com.jakewharton:butterknife:8.0.1'
  apt 'com.jakewharton:butterknife-compiler:8.0.1'
}

इसके बिना लोड किए जाने के लिए कोई उत्पन्न कोड नहीं है और इस प्रकार कोई भी फ़ील्ड सेट नहीं किया जाता है।

आप यह सत्यापित कर सकते हैं कि ButterKnife ButterKnife.setDebug(true) को कॉल ButterKnife.setDebug(true) और Logcat में देख कर काम कर रहा है।


App Level(build.gradle)

apply plugin: 'android-apt'
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:24.2.1'
    testCompile 'junit:junit:4.12'
    compile 'com.jakewharton:butterknife:8.4.0'
    apt 'com.jakewharton:butterknife-compiler:8.4.0'
}


Project Level(build.gradle)

buildscript {
    repositories {
        jcenter()
    }
    dependencies {

        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}




butterknife