Для базы данных я хочу создать, обновлять и удалять формы, которые будут создаваться автоматически на основе полей класса базы данных, который Я аннотирую собственные аннотации. Для этого у меня есть класс Abstractfield, который выглядит так (это в Java): < /p>
Код: Выделить всё
public abstract class AbstractField {
private final String name;
public AbstractField(Field field) {
...
}
@Composable
public abstract void Build();
}
< /code>
Например, Nullabletextfield расширяет его (это в Kotlin): < /p>
class NullableTextField(private val field: Field): AbstractField(field) {
@Composable
override fun Build(viewModel: EntityViewModel) {
val formState by viewModel.formState.collectAsStateWithLifecycle()
TextField(
formState.fields[name]!!.value
onValueChange = { viewModel.onChangeValue(name, it) }
)
}
}
< /code>
Теперь, для любого объекта базы данных (я создал абстрактный класс для сущностей с полем с именем «ID»), я хочу автоматически создать форму для создания (игрок - такая база данных. Расширение Abstractentity WithIte): < /p>
@Composable
fun EntityCreateForm() {
val viewModel: EntityFormViewModel = viewModel(factory = EntityFormViewModelFactory(Player::class.java))
val fields: List = viewModel.getFields()
LazyColumn {
items(fields) { field ->
field.Build()
}
}
}
< /code>
Однако я получаю сообщение об ошибке, в котором говорится < /p>
java.lang.NoSuchMethodError: No virtual method Build(Lnet/.../EntityFormViewModel;Landroidx/compose/runtime/Composer;I)V in class Lnet/.../AbstractField; or its super classes (declaration of 'net.....AbstractField' appears in /data/data/net.....app_name/code_cache/.overlay/base.apk/classes6.dex)
Подробнее здесь: https://stackoverflow.com/questions/793 ... ethoderror
Мобильная версия