Far*_*ABZ 15 android butterknife
我想在我的项目中使用Butter Knife.我根据Butter Knife教程做了一切.但是当我向视图设置任何内容(setText,setClickListener ...)时,我得到了null对象引用异常.
这是我的代码:
public class LoginActivity extends AppCompatActivity implements LoginView, View.OnClickListener {
@BindView(R.id.acEtUsername) AppCompatEditText userName;
@BindView(R.id.acEtPassword) AppCompatEditText password;
@BindView(R.id.prgCheckLogin) ProgressBar prgCheckLogin;
@BindView(R.id.btnLogin) Button btnLogin;
LoginPresenter loginPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
ButterKnife.bind(this);
ButterKnife.setDebug(true);
loginPresenter = new LoginPresenterImpl(this);
btnLogin.setOnClickListener(this); // or userName.setText("userName");
}
/** Other Methods **/
Run Code Online (Sandbox Code Playgroud)
activity_login.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<android.support.v7.widget.AppCompatEditText
android:id="@+id/acEtUsername"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:layout_marginRight="32dp"
android:layout_marginLeft="32dp"
android:hint="@string/user_name"/>
<android.support.v7.widget.AppCompatEditText
android:id="@+id/acEtPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:layout_marginTop="8dp"
android:layout_marginRight="32dp"
android:layout_marginLeft="32dp"
android:hint="@string/password"/>
<Button
android:id="@+id/btnLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="8dp"
android:text="@string/login"/>
<ProgressBar
android:id="@+id/prgCheckLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_gravity="center|bottom"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
和错误日志
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.AppCompatEditText.setText(java.lang.CharSequence)' on a null object reference
Run Code Online (Sandbox Code Playgroud)
我的代码有什么问题?
谢谢
Far*_*ABZ 33
我修好了它.
我的build.gradle有问题
我忘了添加
apt 'com.jakewharton:butterknife-compiler:8.0.1'
Run Code Online (Sandbox Code Playgroud)
到build.gradle
谢谢大家
UPDATE
如果您使用neenbedankt.android-apt插件,请先删除它.
然后删除 apt 'com.jakewharton:butterknife-compiler:8.0.1'
然后添加annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
到依赖项.
小智 15
在您的onCreate方法中,请确保您拥有以下行:
ButterKnife.bind(this);
Run Code Online (Sandbox Code Playgroud)
如果没有该行,则不会执行您设置的绑定,并且视图保持为空.
Dar*_*ush 10
如果您使用的是新的Butter Knife版本,请使用以下命令:
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
Run Code Online (Sandbox Code Playgroud)
如果您使用的科特林,替换
annotationProcessor用kapt.
更新:
如果您在项目中使用Gradle插件3.0或更高版本,请更改compile为implementation.如下:
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12170 次 |
| 最近记录: |