2017-10-06 3 views
0

J'essaie d'utiliser dans mon projet Android. J'ai un Activity qui implémente un Interface. J'utilise le modèle MVP. Je suis en train d'obtenir le texte du EditText mais il jette unNe fonctionne pas Butterknife avec une erreur d'exception de pointeur nul

exception de pointeur NULL.

Voici mon code simple.

Gradle dépendances

compile 'com.jakewharton:butterknife:8.8.1' 

Mise en page

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.rao.myapplication.LoginActivity"> 

    <EditText 
     android:id="@+id/etUseName" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <EditText 
     android:id="@+id/etPassword" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:layout_constraintTop_toBottomOf="@+id/etUseName"/> 
    <Button 
     android:id="@+id/btnLogin" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Login" 
     android:onClick="loginClick" 
     app:layout_constraintTop_toBottomOf="@+id/etPassword"/> 

</android.support.constraint.ConstraintLayout> 

Activité

package com.example.rao.myapplication; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

import com.example.rao.myapplication.Presenter.LoginActivityPresenter; 
import com.example.rao.myapplication.View.LoginActivityView; 

import butterknife.BindView; 
import butterknife.ButterKnife; 

public class LoginActivity extends AppCompatActivity implements LoginActivityView { 

    @BindView(R.id.etUseName) 
    EditText userNameET; 

    @BindView(R.id.etPassword) 
    EditText passwordET; 

    @BindView(R.id.btnLogin) 
    Button loginBtn; 

    private LoginActivityPresenter presenter; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login); 

     ButterKnife.bind(this); 
     passwordET.setText("abcd"); // Fails here as well 
     presenter = new LoginActivityPresenter(this); 
    } 

    @Override 
    public void navigateToListActivity() { 

    } 

    @Override 
    public void loginFailed() { 

    } 

    public void loginClick(View view) { 
     Toast.makeText(this, userNameET.getText().toString(), Toast.LENGTH_SHORT).show(); // Fails here 
     Toast.makeText(this, "test", Toast.LENGTH_SHORT).show(); 
    } 
} 

Voici l'erreur journal

FATAL EXCEPTION: principale processus: com.example.rao.myapplication, PID: 24847 java.lang.RuntimeException: Impossible de démarrer l'activité ComposantInfo {com.example.rao .myapplication/com.example.rao.myapplication.LoginActivity}: java.lang.NullPointerException: tentative d'invoquer la méthode virtuelle ' vide android.widget.EditText.setText (java.lang.CharSequence)' sur une référence d'objet null at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2927) à android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2988) à android.app.ActivityThread.-wrap14 (ActivityThread.java) à android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1631) à android.os.Handler.dispatchMessage (Handler.java:102) à android.os.Looper.loop (Looper.java:154) à android.app.ActivityThread.main (ActivityThread.java:6682) à java. lang.reflect.Method.invoke (méthode native) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1520) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java : 1410) Causée par : java.lang.NullPointerException: Tentative d'invocation de la méthode virtuelle 'void android.widget.EditText.setText (java.lang.CharSequence)' sur un objet nul référence d'objet à com.example.rao.myapplication.LoginActivity.onCreate (LoginActivity.java:34) at android.app.Activity.performCreate (Activity.java:6942) à android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1126) at android.app.ActivityThread.performLaunchActivity (ActivityThread. java: 2880) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2988) à android.app.ActivityThread.-wrap14 (ActivityThread.java) at android.app.Activity Thread $ H.handleMessage (ActivityThread.java:1631) à android.os.Handler.dispatchMessage (Handler.java:102) à android.os.Looper.loop (Looper.java:154) at android.app.ActivityThread.main (ActivityThread.java:6682) à java.lang.reflect.Method.invoke (méthode native) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1520) à com.android.internal .os.ZygoteInit.main (ZygoteInit.java:1410)

Pourriez-vous s'il vous plaît me guider dans la bonne direction sur ce point, s'il vous plaît.

+0

Déposez votre classe LoginActivityView aussi. – Ankita

Répondre

4

ajouter la ligne ci-dessous aussi dans votre fichier gradle ....

compile 'com.jakewharton:butterknife:8.8.1' 
annotationProcessor 'com.jakewharton:butterknife-compiler:8.+'//add this line also 

espère qu'il résoudre vos problèmes ....

+0

Avoir le même problème, mais cela ne le résout pas. Toute autre solution? – Minkoo

2

Mettre cela dans le fichier gradle et vérifier. Voici le lien pour official documentation.

Gradle

compile 'com.jakewharton:butterknife:8.8.1' 
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'