2017-10-06 58 views
0

我想在我的Android项目中使用。不工作Butterknife空指针异常错误

我有一个Activity,实现Interface。我正在使用MVP模式。 我正在尝试从EditText中获取文本,但它会抛出一个

空指针异常。

这是我的简单代码。

摇篮依赖性

compile 'com.jakewharton:butterknife:8.8.1' 

布局

<?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> 

活动

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(); 
    } 
} 

以下是错误日志

致命异常:主 工艺:com.example.rao.myapplication,PID:24847 了java.lang.RuntimeException:无法启动活动 ComponentInfo {com.example.rao .myapplication/com.example.rao.myapplication.LoginActivity}: java.lang.NullPointerException:尝试调用虚方法'void android.widget.EditText.setText(java.lang.CharSequence)'null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988) at android.app.ActivityThread.-wrap14(ActivityThread.java) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1631) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6682) at java。 lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1520) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java :1410) 引起的:java.lang.NullPointerException:尝试在null对象引用 上调用虚拟方法'void android.widget.EditText.setText(java.lang.CharSequence)'com.example.rao.myapplication.LoginActivity.onCreate( (Activity.read.java:34) at android.app.Activity.performCreate(Activity.java:6942) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126) at android.app.ActivityThread.performLaunchActivity(ActivityThread。 java:2880) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988) at android.app.ActivityThread.-wrap14(ActivityThread.java) at android.app.Activity螺纹$ H。在android.app.ActivityThread.main处的android.os.Looper.loop(Looper.java:154) 处使用handleMessage(ActivityThread.java:1631) (android.os.Handler.dispatchMessage(Handler.java:102) (本地方法) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1520) at com.android.internal .os.ZygoteInit.main(ZygoteInit.java:1410)

请您请指导我在这个正确的方向,请。

+0

安置自己的LoginActivityView类也。 – Ankita

回答

4

添加下面一行还您gradle这个文件....

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

希望它可以解决你的问题....

+0

有同样的问题,但这并不能解决问题。其他解决方案? – Minkoo

2

在gradle这个文件将这个和检查。 这里是链接official documentation.

摇篮

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