这是我尝试与ButterKnife一起使用的代码,但是在运行项目时出现以下错误。
错误:找不到符号类活动
错误:程序包活动不存在
错误:程序包活动不存在
BaseActivity
public abstract class BaseActivity extends AppCompatActivity {
private Unbinder unbinder;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutResource());
ButterKnife.bind(this);
setupUI();
}
protected abstract int getLayoutResource();
protected abstract void setupUI();
}
MainActivity
public class MainActivity extends BaseActivity {
@Override
protected void setupUI() {
}
@Override
protected int getLayoutResource() {
return R.layout.activity_main;
}
}
RegisterActivity
public class RegisterActivity extends BaseActivity {
@BindView(R.id.editText_username)
EditText et;
@Override
protected void setupUI() {
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
protected int getLayoutResource() {
return R.layout.activity_register;
}
@Override
public void onBackPressed() {
this.finish();
}
}
为什么我不能用抽象类绑定多个活动?
答案 0 :(得分:1)
首先,您不需要Unbinder
进行活动because Unbinder is only needed for
片段`。
第二,最好使用另一种方法来覆盖它,这样就不必设置onCreate
。像这样:
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutResource());
ButterKnife.bind(this);
setupUI();
}
protected abstract int getLayoutResource();
protected abstract void setupUI();
}
然后您可以使用:
public class MainActivity extends BaseActivity {
@Override
protected void setupUI() {
// setup the UI.
}
@Override
protected int getLayoutResource() {
return R.layout.activity_main;
}
}
这是将ButterKnife与抽象类一起使用的工作示例: