Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将任何活动或片段的数据绑定对象传递给方法参数而无需强制转换?_Java_Android_Android Fragments_Android Activity_Data Binding - Fatal编程技术网

Java 如何将任何活动或片段的数据绑定对象传递给方法参数而无需强制转换?

Java 如何将任何活动或片段的数据绑定对象传递给方法参数而无需强制转换?,java,android,android-fragments,android-activity,data-binding,Java,Android,Android Fragments,Android Activity,Data Binding,假设我想添加一个工具栏阴影效果,因为我已经创建了一个在活动中使用的工具栏阴影效果方法,但这是一种可以在任何地方使用的方法,所以我最好在我的baseActivity类中添加此方法,但随后出现了数据绑定问题,每个活动都有一个唯一的数据绑定对象我没有看到任何超类数据绑定对象可以将其放置在方法参数上,我找到的唯一解决方案是使用ViewDataBinding,但为此,我需要强制转换特定绑定,以便在方法中接收视图ID,使其成为冗余,我的代码如下 public void methodA(ViewDataBin

假设我想添加一个工具栏阴影效果,因为我已经创建了一个在活动中使用的工具栏阴影效果方法,但这是一种可以在任何地方使用的方法,所以我最好在我的baseActivity类中添加此方法,但随后出现了数据绑定问题,每个活动都有一个唯一的数据绑定对象我没有看到任何超类数据绑定对象可以将其放置在方法参数上,我找到的唯一解决方案是使用
ViewDataBinding
,但为此,我需要强制转换特定绑定,以便在方法中接收视图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"));
    }
}

由于我需要强制转换某个活动的特定数据绑定,我无法在我的超类上使用此方法进行任何活动或片段绑定,因此我希望在不强制转换的情况下实现此机制,我们将不胜感激。

1-您可以声明一个抽象方法
getToolbar()
并仅在子活动中实施它


2-如果工具栏始终具有相同的id,则可以使用
dataBinding.getRoot().findViewById(自定义工具栏)
,但是您可能不需要进行数据绑定。

1-您可以声明一个抽象方法
getToolbar()
,并仅在子活动中实现它

2-如果工具栏始终具有相同的id,则可以使用
dataBinding.getRoot().findViewById(自定义工具栏)
。但是,您可能不需要进行数据绑定