как сохранить значение свойств во фрагменте после переключения вкладки в нижнем навигационном представлении? - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть 4 вкладки в нижнем виде навигации, которые называются:

  1. Домой
  2. Поиск
  3. Избранное
  4. Профиль

вот упрощенный код фрагмента моего профиля

class ProfileFragment : Fragment() {

    private var lastDocumentFromQuery : DocumentSnapshot? = null
    private var attendedEvents = ArrayList<Event>()
    private var currentPage = 0
    private var isLoadingData = false
    private var isInTheLastPage = false
    private var noMoreDataAvailable = false

    lateinit var linearLayoutManager : LinearLayoutManager
    lateinit var model : ProfileViewModel

    override fun onAttach(context: Context) {
        super.onAttach(context)

        mContext = context
        activity?.let { mActivity = it }

    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {


        return fragmentView
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)

        model = ViewModelProviders.of(this).get(ProfileViewModel::class.java)


    }

}

, если я нахожусь на вкладке Профиль и при переключении на вкладку Избранное, например, значение свойств в моем классе ProfileFragment будетуйти, и кажется, что он воссоздан с самого начала снова.

Я имею в виду эти свойства:

    private var lastDocumentFromQuery : DocumentSnapshot? = null
    private var attendedEvents = ArrayList<Event>()
    private var currentPage = 0
    private var isLoadingData = false
    private var isInTheLastPage = false
    private var noMoreDataAvailable = false

эти свойства изменятся, когда пользователь будет взаимодействовать в ProfileFragment.и я хочу сохранить значения всех этих свойств, а не вернуться к значению по умолчанию после переключения вкладки.

Я пытался использовать модель представления для сохранения значений, но метод onCleared() в моей viewModelкласс срабатывает, когда я переключаю вкладку, например, с вкладки «Профиль» на «Избранное», так что сохраненные свойства также исчезают.

Я использую компонент контроллера навигации, и в своей функции MainActivity я устанавливаю этот appBarConfiguration (я нене знаете, поможет ли приведенный ниже код моей проблеме или нет)

// set up top hierarchy destination

val appBarConfiguration = AppBarConfiguration(setOf(
   R.id.destination_home,
   R.id.destination_search,
   R.id.destination_favourite,
   R.id.destination_profile)
)

setSupportActionBar(toolbar)         
searchToolbar.setupWithNavController(navController,appBarConfiguration)

так как сохранить значения этих свойств?извините, я новичок в разработке Android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...