Как получить доступ к экземпляру класса данных в другой деятельности?

Если вы используете PHP, попробуйте добавить следующий код в beaning файла php:

, если вы используете localhost, попробуйте следующее:

header("Access-Control-Allow-Origin: *");

if вы используете внешние домены, такие как сервер, попробуйте следующее:

header("Access-Control-Allow-Origin: http://www.website.com");
0
задан Ryan Godlonton-Shaw 30 March 2019 в 23:54
поделиться

1 ответ

Я делаю это, потому что не хочу постоянно передавать данные между действиями, используя Intent.putString, Intent.putInt или Shared Preferences, поскольку данные полезны только для текущего сеанса.

Похоже, вы хотите съесть свой пирог и съесть его; что является проблемой, потому что если вы не используете Intent bundle и не используете постоянство диска; тогда вам по крайней мере потребуется реализовать BaseActivity.onSaveInstanceState(), иначе ваш бедный пользователь потеряет свои данные (состояние), когда через некоторое время вернется в ваше приложение;)

Представьте себе, вы задали поля в Activity1 Я перехожу к Activity3, затем получаю телефонный звонок, который занимает 20 минут. Тем временем Android завершает работу моего приложения, я возвращаюсь с телефонного звонка, приложение запускается с нуля в Activity3, и материал, который я предположительно установил в Activity1, но никогда не сохранял каким-либо образом, теперь null или "" 0. Не очень хороший UX, особенно когда он вызывает сбои тоже.


Простое решение для вашего сценария состоит в том, чтобы вместо разложения вашего Player вручную каждый раз, просто использовать @Parcelize.

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

androidExtensions {
    experimental = true
}

Затем

@Parcelize data class Player: Parcelable (
    val name: String,
    val age: Int,
    val gender: String
)

И

// inline fun <reified T: Activity> Activity.intentFor(builder: Intent.() -> Unit) {
//     return Intent(this, T::class.java).apply(builder)
// }

startActivity(intentFor<OtherActivity>() {
    putParcelableExtra("player", player)
})

val player = intent.getParcelableExtra("player")
0
ответ дан EpicPandaForce 30 March 2019 в 23:54
поделиться
Другие вопросы по тегам:

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