Как обновить sh фрагмент после повторного нажатия от активности с kotlin - PullRequest
0 голосов
/ 24 января 2020

В моем приложении android с Kotlin у меня есть интерфейс для учетной записи пользователя, который отображает всю его личную информацию, такую ​​как FullName, Email, Address ..., а также содержит кнопку для обновления пользователя. Учетная запись является фрагментом, и когда я нажимаю кнопку обновления I go для действия UpdateProfile. После обновления профиля пользователя, когда я нажимаю кнопку BackPressed для возврата к фрагменту учетной записи, фрагмент учетной записи не обновляется и новая информация не отображается.

Итак, как обновить sh Фрагмент учетной записи после повторного нажатия от действия?

Я создаю функцию refreshate () в AccountFragment следующим образом:

fun recreate() {
    val ft: FragmentTransaction = this.fragmentManager!!.beginTransaction()
    ft.detach(this)
    ft.attach(this)
    ft.commit()
   }

и сопутствующий объект:

companion object {
    lateinit var fragment: AccountFragment
    fun newInstance(): AccountFragment {
        fragment = AccountFragment()
        return fragment
    }
}

А, В активности updateProfile я добавляю в кнопку back button вызов для воссоздания функции:

    private var myFragment: AccountFragment = AccountFragment.newInstance()
  override fun onBackPressed() {

        super.onBackPressed()
        myFragment.recreate()
        finish()
    }

И я получаю следующую ошибку:

kotlin.KotlinNullPointerException
    at com.app.fragment.AccountFragment.recreate(AccountFragment.kt:161)
    at com.app.activity.user.profile.update.UpdateProfile.onBackPressed(UpdateProfile.kt:96)
    at com.app.activity.user.profile.update.UpdateProfile$onCreate$1.onClick(UpdateProfile.kt:46)

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

1 Ответ

1 голос
/ 24 января 2020

Я думаю, вы можете добавить finish() в активности

override fun onBackPressed() {
       super.onBackPressed()
       finish()
   }

, а затем добавить refre sh на onResume() в вашем фрагменте

 override fun onResume() {
        super.onResume()
         // refresh here 
    }

Я надеюсь, что это поможет вам .

...