Абстрактный композиционный метод бросает nosuchmethoderrorAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Абстрактный композиционный метод бросает nosuchmethoderror

Сообщение Anonymous »

Я пытаюсь сделать следующее: < /p>
Для базы данных я хочу создать, обновлять и удалять формы, которые будут создаваться автоматически на основе полей класса базы данных, который Я аннотирую собственные аннотации. Для этого у меня есть класс 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)
Любое сообщение отладки до field.build () выполняется, все после этого не. Кроме того, при внедрении Abstractfield#Build в этом самом классе, например, с пустым телом метода, та же ошибка все еще выброшена.


Подробнее здесь: https://stackoverflow.com/questions/793 ... ethoderror
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»