我怎样才能有 2 个不同的片段,在不编写代码两次的情况下实现相同的方法?
How can I have 2 different fragment, implementing same methods without writing the code twice?
我有一个片段屏幕,其中有一个用于为我的应用程序创建问题和答案的表单。对于这个片段,我使用了数据绑定,然后我创建了许多函数来验证表单,并检查其他内容。
现在,我正在创建一个不同的片段屏幕,我将能够在其中编辑创建的这个问题和答案,为此,我想使用我在创建时使用的相同功能另一个片段,例如验证用户正在编辑的字段。
我想过实现一个接口,把这些常用的功能放在那里,这样我就可以在两个片段上使用它。但是,在这些函数中我使用了 DataBinding,我不知道如何在界面上使用它,所以它会得到关于一个片段或另一个片段的正确 XML 变量。
在下面的屏幕截图中,它显示我正在尝试使用绑定,但我无法指定我正在使用哪个绑定,否则代码将仅适用于片段,而不适用于两者。因此,我尝试声明为 DataBindingUtil,但没有成功。
Screenshot interface
如果您想采用这种方法,您可以将视图作为字段添加到界面中:
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
}
....
}
}
然后在片段中创建绑定后初始化这些字段。
我有一个片段屏幕,其中有一个用于为我的应用程序创建问题和答案的表单。对于这个片段,我使用了数据绑定,然后我创建了许多函数来验证表单,并检查其他内容。
现在,我正在创建一个不同的片段屏幕,我将能够在其中编辑创建的这个问题和答案,为此,我想使用我在创建时使用的相同功能另一个片段,例如验证用户正在编辑的字段。
我想过实现一个接口,把这些常用的功能放在那里,这样我就可以在两个片段上使用它。但是,在这些函数中我使用了 DataBinding,我不知道如何在界面上使用它,所以它会得到关于一个片段或另一个片段的正确 XML 变量。
在下面的屏幕截图中,它显示我正在尝试使用绑定,但我无法指定我正在使用哪个绑定,否则代码将仅适用于片段,而不适用于两者。因此,我尝试声明为 DataBindingUtil,但没有成功。
Screenshot interface
如果您想采用这种方法,您可以将视图作为字段添加到界面中:
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
}
....
}
}
然后在片段中创建绑定后初始化这些字段。