当前位置: 首页 > 知识库问答 >
问题:

在Butternife中使用BindView时Geeting null

钱飞翼
2023-03-14
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="schemas.android.com/apk/res/android"; 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" android:orientation="vertical"> 
  <View android:id="@+id/activity_top_group_area1" 
   android:layout_width="wrap_content" 
   android:layout_height="match_parent"/>
 </LinearLayout> 
public class TopActivity extends BaseActivity {

    @BindView(R.id.activity_top_group_area1)

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

        ButterKnife.bind(this);
        # do something... but mViewClickArea1 is null here.
     }
    }
public class BaseActivity extends AppCompactActivity  {

# do some Run time Permission work that is ...
private int requestCodeM;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public void onRequestPermissionsResult(final int requestCode, @NonNull final String[] permissions, @NonNull int[] grantResults) {
    boolean isPermissionGranted = false;
    if (requestCodeM == requestCode) {
        if (grantResults.length > 0) {
            /*--------------------------------------------------*/
            for (int i = 0; i < grantResults.length; i++) {
               if(grantResults[i] == PackageManager.PERMISSION_GRANTED){
                   isPermissionGranted=true;
               }else {
                   isPermissionGranted=false;
                   break;
               }
            }
            permissiongrantedResult(requestCode,isPermissionGranted);
        }
    }
}

public void addRequestPermission(String[] permissionRequest, int requestCode) {
    this.requestCodeM = requestCode;
    ActivityCompat.requestPermissions(ActivityWithRequestPermission.this, permissionRequest, requestCode);
}

public abstract void permissiongrantedResult(int requestCode, boolean grantStatus);`enter code here`
}

共有1个答案

伍成仁
2023-03-14

在您的代码中尝试此操作。

将xml代码更改为

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<View
    android:id="@+id/activity_top_group_area1"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"/>
</LinearLayout>

检查项目分级

dependencies {
    classpath 'com.android.tools.build:gradle:2.3.3'
    // add this in your code
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'  
}
apply plugin: 'com.android.application'
apply plugin: 'android-apt'  // add this 

...
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
    })

    compile 'com.jakewharton:butterknife:8.6.0'
    // add this 
    apt 'com.jakewharton:butterknife-compiler:8.6.0
}
 类似资料:
  • 对此可能有一个简单的答案,但试图充分使用Butternife,将一些FindViewByID转换为@BindViews,并注意到我不能对需要声明为final的视图使用BindView,因为Java引发了“变量'x'可能没有初始化”的错误。 显然,我不需要使用BindView,而只是对这一个感到好奇,以了解更多关于Java的知识。我读了一点关于最终宣言的意思,但不能把它和巴特尼刀联系起来。谢谢你的帮

  • 我有一个来自别人的项目,但当我打开它时,有一些错误。Butternife有一个错误,它显示:“”,我知道它已被@bindview替换,我将更改为,但只有findbyid2个参数,而只有1个参数。我如何转换它? 这是新代码: 这是旧代码:

  • 我对Android、Android Studio、Butternife和Gradle构建系统相当陌生。然而,我对Java或一般编程并不陌生。 我试图用JDK 1.8和Butternife 8.1.0版本构建一个Android应用程序,但Gradle构建一直失败,比如: 错误:在任务“:app:CompiledEbugJavaWithJack”上找不到属性“Options”。 null 它到底管用吗