Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Butter Knife library for view injection

What i am doing::

  1. I am trying to run butter knife library for my simple project
  2. I have followed all the steps in documentation, but still i am getting log errors
  3. How can i resolve this, am i missing any step
  4. I have also added the jar in libs folder

MainActivity.java

package com.example.butterknife;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import butterknife.ButterKnife;
import butterknife.InjectView;

public class MainActivity extends Activity {

    @InjectView(R.id.txtID) TextView title;

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

        ButterKnife.inject(this);
        title.setText("Hello Everyone !!");

    }
}

Log::

04-15 11:50:57.845: E/AndroidRuntime(913): FATAL EXCEPTION: main
04-15 11:50:57.845: E/AndroidRuntime(913): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.butterknife/com.example.butterknife.MainActivity}: java.lang.NullPointerException
04-15 11:50:57.845: E/AndroidRuntime(913):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
04-15 11:50:57.845: E/AndroidRuntime(913):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
04-15 11:50:57.845: E/AndroidRuntime(913):  at android.app.ActivityThread.access$600(ActivityThread.java:122)
04-15 11:50:57.845: E/AndroidRuntime(913):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
04-15 11:50:57.845: E/AndroidRuntime(913):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-15 11:50:57.845: E/AndroidRuntime(913):  at android.os.Looper.loop(Looper.java:137)
04-15 11:50:57.845: E/AndroidRuntime(913):  at android.app.ActivityThread.main(ActivityThread.java:4340)
04-15 11:50:57.845: E/AndroidRuntime(913):  at java.lang.reflect.Method.invokeNative(Native Method)
04-15 11:50:57.845: E/AndroidRuntime(913):  at java.lang.reflect.Method.invoke(Method.java:511)
04-15 11:50:57.845: E/AndroidRuntime(913):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
04-15 11:50:57.845: E/AndroidRuntime(913):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
04-15 11:50:57.845: E/AndroidRuntime(913):  at dalvik.system.NativeStart.main(Native Method)
04-15 11:50:57.845: E/AndroidRuntime(913): Caused by: java.lang.NullPointerException
04-15 11:50:57.845: E/AndroidRuntime(913):  at com.example.butterknife.MainActivity.onCreate(MainActivity.java:19)
04-15 11:50:57.845: E/AndroidRuntime(913):  at android.app.Activity.performCreate(Activity.java:4465)
04-15 11:50:57.845: E/AndroidRuntime(913):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
04-15 11:50:57.845: E/AndroidRuntime(913):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
04-15 11:50:57.845: E/AndroidRuntime(913):  ... 11 more
04-15 11:51:06.722: I/Process(913): Sending signal. PID: 913 SIG: 9
like image 907
Devrath Avatar asked Apr 15 '14 06:04

Devrath


People also ask

Is ButterKnife deprecated?

The deprecation period starts with Kotlin 1.4.

Why do we use butter knife?

Butter spread knifes are used to add butter to your bread plate and feature sharp edges to slice through butter. Butter spreaders have rounded ends to avoid biting bread and are used to apply butter on bread after it has been placed on the plate.

What is ButterKnife dependency injection?

Android ButterKnife library is a view injection library that injects views into android activity / fragments using annotations. For example, @BindView annotation avoids using findViewById()method by automatically type casting the view element. It has been developed by. Jake Wharton.


1 Answers

Follow this Steps [ into Eclipse IDE ]:

1)Right click on your project withIn Package Explorer. Got to Java Compiler --> Annotation Processing and check the Enable project specific settings.

2)Expand the Annotation Processing section and select Factory Path. Check Enable project specific settings and then click Add JARs Navigate to the project's libs/ folder and select the ButterKnife jar.

3)Click Ok to save the new settings. Eclipse will ask you to rebuild your project to which you should click Yes.

Note: Make sure that the .apt_generated/ folder is in your project root. It should contain files like YOURACTIVITY$$ViewInjector.java. If these files are not present trigger a clean build by selected Project → Clean. This folder and files should not be checked into revision control.

Reference -> Set up manual configuration for ButterKnife annotations

like image 75
Nitesh Tiwari Avatar answered Sep 22 '22 10:09

Nitesh Tiwari