java - 如何将任何 Activity 或 fragment 的数据绑定(bind)对象传递给方法参数而不需要强制转换?

标签 java android android-fragments android-activity data-binding

假设我想添加一个工具栏阴影效果,为此我创建了一个在 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/

相关文章:

java - JFileChooser 无法设置默认选择

java - 我如何创建一个新的 CardView?

android - 如何在旋转屏幕后关闭 dialogfragment

java - getItem() 在 Android 中的 ViewPager 中如何工作?

c# - java是否像c#一样支持显式接口(interface)实现?

java - Spring登录表单从https切换为http

java - 尝试显示数据库数据时转换集合时出现问题

android - Gradle 不生成输出 APK

android - Android 上外接显示器的屏幕截图?

android - Fragment 保留的内存