Я столкнулся с той же проблемой, ожидая add
и других опций для транзакций фрагментов. Я реализовал эту работу, чтобы сохранить состояние при ответном ударе.
Я просто добавил проверку наличия привязки.затем я просто восстанавливаю предыдущее состояние, то же самое с сетевым вызовом, я добавил проверку, если данные присутствуют в модели представления, тогда не выполняю повторное сетевое обновление.После тестирования все работает как положено.
private lateinit var binding: FragmentSearchResultsBinding
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
viewModel =
ViewModelProviders.of(this, mViewModelFactory).get(SearchResultsViewModel::class.java)
return if (::binding.isInitialized) {
binding.root
} else {
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_search_results, container, false)
with(binding) {
//some stuff
root
}
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//reload only if search results are empty
if (viewModel.searchResults.isEmpty()) {
args.searchKey.let {
binding.toolbarHome.title = it
viewModel.onSearchResultRequest(it)
}
}
}