android - Activity 之外的 butterknife 结合

标签 android butterknife

如何将绑定(bind)与 Activity 一起使用?

public class MyViewController extends BaseViewController<MyActivity> {

    @BindView(R.id.view_pager)
    ViewPager viewPager;

    public void bindViews() {
        //bind(@NonNull Object target, @NonNull Activity source)
        ButterKnife.bind(this, activity);
    }  
}

看起来不错。但是我的应用程序在生成的代码中崩溃:
    protected InnerUnbinder(final T target, Finder finder, Object source) {
    ...
          target.viewPager = finder.findRequiredViewAsType(source, 2131558529, "field 'viewPager'", ViewPager.class);
    ...
}

butterknife.internal.Finder.findRequiredViewAsType 在哪里
public final <T> T findRequiredViewAsType(Object source, int id, String who, Class<T> cls) {
    View view = findRequiredView(source, id, who);
    try {
      return cls.cast(view);
    } catch (ClassCastException e) {
      String name = getResourceEntryName(view, id);
      throw new IllegalStateException("View '"
          + name
          + "' with ID "
          + id
          + " for "
          + who
          + " was of the wrong type. See cause for more info.", e);
    }

因为“对象源”是 Activity,而不是 View,所以我的应用程序将因 Class Cast Exception 而崩溃。

我只有一个想法如何绑定(bind) Activity 之外的 View :发送 myActivity.findViwById(R.id.activity_root_view) 作为活页夹的第二个参数(工作正常)。而且我认为,如果没有这个丑陋的代码,这种方法应该可以正常工作。你怎么看,我哪里错了?

Butterknife 8.1.0-SNAPSHOT

最佳答案

我遇到的问题是我有两个具有相同标识符的不同 View 。所以我只是重命名了它们,这就消失了。
https://github.com/JakeWharton/butterknife/issues/902

关于android - Activity 之外的 butterknife 结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37266562/

相关文章:

java - Webview - 如何在旋转时停留在当前页面

java - fragment 上 Butterknife 的 BindView @onclick NullPointError

android - 标记文件夹并获取它们的路径

android - Feed 广告中的 Facebook Native 在 RecyclerView 中相互重叠

java - 画廊项目背景未随 setSelection 更改

android - Flutter:在 channel plugins.flutter.io/path_provider 上找不到方法 getApplicationDocumentsDirectory 的实现

android-studio - 集成 Butterknife 后未显示菜单项

android - 在 android wear 项目中使用 ButterKnife

android - ButterKnife ViewBinder 类在使用 Jack 时被丢弃

java - Butterknife 8.4.0 重新运行应用后找不到 View 。它得到一个 NullPointerException