我有一个 fragment 屏幕,其中有一个用于为我的应用程序创建问题和答案的表单。对于这个 fragment ,我使用数据绑定(bind),然后我创建了许多函数来验证表单,并检查其他内容。
现在,我正在创建一个不同的 fragment 屏幕,我可以在其中编辑创建的问题和答案,为此,我想使用在另一个 fragment 上创建时使用的相同功能,例如验证用户正在编辑的字段的示例。
我考虑实现一个接口(interface),并将这些常用功能放在那里,这样我就可以在两个 fragment 上使用它。但是,在这些函数中,我使用 DataBinding,但我不知道如何在界面上使用它,因此它会获得关于一个 fragment 或另一个 fragment 的正确 XML 变量。
在下面的屏幕截图中,它显示我正在尝试使用绑定(bind),但是我无法指定我正在使用哪一个,否则代码将仅适用于 fragment ,而不适用于两者。因此,我尝试声明为 DataBindingUtil 但它不起作用。
Screenshot interface
最佳答案
如果您想采用这种方法,您可以将 View 添加为界面中的字段:
interface IQuestionForm {
var newQuestionTextInput: EditText
var answer1TextField: EditText
fun validateAllParametersToCreateNewQuestion(){
var allTextInputSet = true
if (newQuestionTextInput.text.isNullOrEmpty()){
newQuestionTextInput.error = "You have to enter the question"
allTextInputSet = false
}
if (answer1TextField.text.isNullOrEmpty()){
answer1TextField.error = "You have to enter an answer"
allTextInputSet = false
}
....
}
}
然后在 fragment 中创建绑定(bind)后初始化这些字段。
关于android - 我怎样才能有 2 个不同的 fragment ,实现相同的方法而无需编写两次代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63747621/