Невозможно получить / распечатать значения экземпляра моей модели в android с помощью kotlin

Забудьте об ошибке (что не работает во всех случаях: независимо от того, что такое файловая система, одновременная активность может ее отключить) и шифровать любой секретный файл. См. Следующие вопросы: Как зашифровать мой домашний раздел? Как я могу легко зашифровать файл? Есть ли альтернатива FileVault для Ubuntu

0
задан 13 August 2018 в 15:34

2 ответа

Вы проверили, что вы получаете достоверные данные из своего intent.extras?

Также я предлагаю вам использовать data class для ваших моделей. Он будет выглядеть примерно так:

data class ParentDetails(
    var parent_id: Int = 0,
    var parent_name: String = "",
    var parent_email: String = "",
    var parent_relation: String = "",
    var parent_location: String = ""
)

Вы сможете использовать его следующим образом:

val new_parent = ParentDetails(
        parent_name = intent.extras.getString("name"),
        parent_email = intent.extras.getString("email"),
        parent_relation = intent.extras.getString("parent_relation"),
        parent_location = intent.extras.getString("locationdata")
    )
    println(new_parent.tostring())
1
ответ дан 15 August 2018 в 17:00
  • 1
    Спасибо. Это работает, но почему я так не написал? Кроме того, target.extras возвращает действительный. Я проверил. – Eswar 13 August 2018 в 16:20
  • 2
    Класс @Eswar создает для вас удовольствие toString() (а также пару других). Думаю, это была основная проблема в вашем случае. Для получения дополнительной информации ознакомьтесь с классом данных . – Alex Grebennikov 13 August 2018 в 17:08

Как уже упоминалось, у вас есть опечатка. toString возвращает хэш-код объекта, если он не переопределен, чтобы вернуть что-то еще. Посмотрите оригинальную реализацию для более подробной информации.

Переопределяя метод toString, вы меняете то, что он возвращает, и через это печатается, когда вы print(someClass). DVarga показал, что в их ответе.

Классы данных автоматически генерируют метод toString, содержащий содержимое класса. Поэтому создание класса данных является ярлыком для получения вывода, содержащего данные.

Причина, по которой метод, который у вас был, не работает, заключается в том, что вы его не вызывали. если вы вызываете его вместо toString, вы получите данные, напечатанные.

Кроме того, toString явно вызывается при печати класса. Вам не нужно называть print(someInstance.toString()), print(someInstance) достаточно.

И пока я пишу ответ, вам не нужно использовать вторичные конструкторы в Котлин. Первичные конструкторы значительно сократили ваш код, будь то класс данных или нет. Кроме того, вы должны изучить соглашения об именах.

1
ответ дан 15 August 2018 в 17:00

Другие вопросы по тегам:

Похожие вопросы: