如何在基础活动和子活动中处理黄油刀绑定?

Gee*_*oid 8 android butterknife

有一个带有布局的BaseActivity和一个扩展了这个BaseActivity的子Activity.

如何绑定视图以便BaseActivity中的视图在BaseActivity中绑定,并且Sub活动中的视图绑定在那里?

以下是解释当前场景的示例代码, 注意:示例代码来自此处

基础活动

public class BaseActivity extends AppCompatActivity {

    protected void onCreate(Bundle savedInstanceState, int layout) {
        super.onCreate(savedInstanceState);
        super.setContentView(layout);
        ButterKnife.bind(this);
    }


@Override
public void setContentView(int layoutResID) {

    //I added my own implementation here

}
}
Run Code Online (Sandbox Code Playgroud)

次级活动

public class SplashActivity extends BaseActivity {

    @BindView(R.id.txtName)
    TextView txtName;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ButterKnife.bind(this);

    }
}
Run Code Online (Sandbox Code Playgroud)

上面的场景产生了许多错误,例如无法找到带有id的视图,

经过大量的研究,我发现很多话题都在讨论,

链接1

链接2

链接3

链接4

所以在浏览完所有链接后,我尝试了以下组合,但没有一个工作

  1. 调用ButterKnife.bind(this) BaseActivity但不在SplashActivity
  2. 同时调用ButterKnife.bind(this)Activity.
  3. 通话ButterKnife.bind(this)SplashActivity,这个组合我无法访问BaseActivity的视图中的项目,因为他们竟然是空.

我的问题如何绑定BaseActivitySplashActivity查看项目?

确切的错误行

Caused by: java.lang.IllegalStateException: Required view '' with ID 2131296567 for field '' was not found. If this view is optional add '@Nullable' (fields) or '@Optional' (methods) annotation.
Run Code Online (Sandbox Code Playgroud)

为了您的好意,视图存在于布局中.

编辑1:

我添加了覆盖的代码 setContentView();

Moh*_*uib 2

异常中的消息告诉您该怎么做:

未找到字段“txtName”所需的 ID 为 2131296567 的视图“txtName”。如果此视图是可选的,请添加“@nullable”注释。

将其添加到您的布局中,或者使用 @Nullable 注释使字段绑定可选。

请参阅此链接