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

升级Butternife时将findByID转换为@BindView时出错

燕博文
2023-03-14

我有一个来自别人的项目,但当我打开它时,有一些错误。Butternife有一个错误,它显示:“error:cant find findById(View,int)notation”,我知道它已被@bindview替换,我将findById更改为@bindview,但只有findbyid2个参数,而@bindview只有1个参数。我如何转换它?

这是新代码:

@BindView(R.id.fab_subitem_image) ImageView image;
private void addActionItem(@NonNull LayoutInflater inflater, int index,
    @NonNull final FABAction item) {
    // Inflate & Configure item
    final View subItem = inflater.inflate(R.layout.fab_subitem, mItemContainer, false);

    image.setBackgroundColor(item.mBgColor);

这是旧代码:

private void addActionItem(@NonNull LayoutInflater inflater, int index,
    @NonNull final FABAction item) {
    // Inflate & Configure item
    final View subItem = inflater.inflate(R.layout.fab_subitem, mItemContainer, false);
    ImageView image = ButterKnife.findById(subItem, R.id.fab_subitem_image); <--This is old code

    image.setBackgroundColor(item.mBgColor);

共有1个答案

林祯
2023-03-14

您必须告诉Butternife为包含@bindview注释的对象生成绑定。您应该在膨胀后调用butterknife.bind(this,subItem):

@BindView(R.id.fab_subitem_image) ImageView image;

private Unbinder unbinder;

private void addActionItem(@NonNull LayoutInflater inflater, int index, @NonNull final FABAction item) {
    // Inflate & Configure item
    final View subItem = inflater.inflate(R.layout.fab_subitem, mItemContainer, false);
    // Generate bindings
    unbinder = ButterKnife.bind(this, subItem);

    image.setBackgroundColor(item.mBgColor);
    ...
}

...

@Override
public void onDestroyView(View view) {
    // Unbind when bindings are no longer needed eg. in onDestroyView of a Fragment
    unbinder.unbind()
}

有关更多信息,请参见文档。

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

  • 问题内容: 我在函数上发现错误,从DatatypeFactory df初始化newInstance()方法后,它显示错误结果,我得到了另一个错误: 我只是将包裹名称从 然后投射: 问题答案: 这是不可能的 投 自到。您需要从一种类型 转换 为另一种类型:

  • 在我的环境中,我需要将mongodb从3.2升级到3.6。对于该进程,我首先按照建议从3.2迁移到3.4。在成功迁移到3.4后,我开始迁移到3.6我无法启动Mongod。当检查日志文件时,我发现错误如下:重要:升级问题:数据文件需要完全升级到3.4版本,然后才尝试升级到3.6;有关更多细节,请参见http://dochub.mongodb.org/core/3.6-upgrade-fcv。 我的妈

  • 我实现了一个按钮,可以简单地删除JList contactList中的一个“联系人”。程序应该做的是,如果按钮删除了contactList中的第一个元素“Broadcast”,将通过输出一条显示消息返回一个错误。否则,应该只是从联系人列表中删除联系人。 我的问题是如何使用默认列表模型正确从 JList 中删除联系人?我看到需要使用 DefaultListModel,因为 remove 函数不在 J

  • E/AndroidRuntime:FATAL EXCEPTION:主进程:com.example.ahsan.ethlon2,PID:11641java.lang.NumberFormatExcture:对于输入字符串:"" 在java.lang.Integer.parseInt(Integer.java:608) 在java.lang.Integer.parseInt(Integer.java: