Отправить переменные между активностью и фрагментами - PullRequest
0 голосов
/ 07 января 2020

Как отправить запрос из MainActivity в ExampleFragment?

MainActivity.kt

override fun onQueryTextSubmit(query: String?): Boolean {
    searchView.clearFocus()
    searchView.setQuery("", false)
    searchItem.collapseActionView()
    return false
}

ExampleFragment.kt

val searchedObserver = Observer<List<News>> { newList ->
    // Access the RecyclerView Adapter and load the data into it
    recyclerView.adapter = NewsAdapter(newList, this.context!!)
}

viewModel.getNewSearched(QUERY FROM MAINACT).observe(this, searchedObserver)

Ответы [ 3 ]

0 голосов
/ 07 января 2020

Вы должны использовать модель представления, прикрепленную в контексте действия, для которого и фрагмент, и действие читают и записывают.

В действии:

viewModel = ViewModelProvider(this).get(YOURVIEWMODEL::class.java)

Во фрагменте:

viewModel = ViewModelProvider(this.getActivity()).get(YOURVIEWMODEL::class.java)

Затем вы можете добавить переменную publi c в модель представления для переменной запроса.

0 голосов
/ 08 января 2020

Вы можете добавить вид поиска в свою деятельность и переопределить onCreateOptionsMenu (), чтобы получить запрос внутри документа.

0 голосов
/ 07 января 2020

Если в вашей основной деятельности есть экземпляр вашего фрагмента, вы можете передать его через любой метод публикации c:

Основной акт:

exampleFragment.setQuery(query)

Фрагмент:

fun setQuery(query: String) {
  // do a thing
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...