假设我想添加一个工具栏阴影效果,为此我创建了一个在 Activity 中使用的 toolbarShadowEffect 方法,但这是可以在任何地方使用的方法类型,所以我最好添加这个方法在我的 baseActivity 类上,但随后出现了数据绑定(bind)问题,每个 Activity 都有一个唯一的数据绑定(bind)对象我没有看到任何可以将它放在方法参数上的父类(super class)数据绑定(bind)对象,我想出的唯一解决方案是使用ViewDataBinding
但为此我需要强制转换特定绑定(bind)以便在方法中接收 View ID 使其变得多余,我的代码如下。
public void methodA(ViewDataBinding dataBinding){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
((ActivityMainBinding)dataBinding).customToolbar.toolbarShadowEffectId.setElevation(8);
((ActivityMainBinding)dataBinding).customToolbar.toolbarShadowEffectId
.setBackgroundColor(Color.parseColor("#BDBDBD"));
}
}
由于我需要转换 Activity 的特定数据绑定(bind),所以我不能在我的父类(super class)上使用此方法进行任何 Activity 或 fragment 绑定(bind),我想在没有转换的情况下实现此机制,我们将不胜感激。
最佳答案
1 - 您可以声明一个抽象方法 getToolbar()
并仅在子 Activity 中实现它。
2 - 如果工具栏始终具有相同的 ID,您可以使用 dataBinding.getRoot().findViewById(custom_toolbar)
。但是,您可能无需数据绑定(bind)也能过关。
关于java - 如何将任何 Activity 或 fragment 的数据绑定(bind)对象传递给方法参数而不需要强制转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44564438/