Я хочу получить значение пакета аргумента с помощью ключа QUERY, но почему, когда я инициализирую переменную в методе onActivityCreated()
, значение не найдено, в чем проблема? ниже я прикрепляю свой код
class SearchFragment : Fragment() {
private lateinit var filmAdapter: FilmAdapter
private lateinit var tvShowAdapter: TvShowAdapter
private lateinit var viewModel: MainViewModel
private var dataFilm = mutableListOf<FilmModel>()
private var dataTv = mutableListOf<TvShowModel>()
companion object{
const val INDEX = "index"
const val QUERY = "query"
fun newInstance(index: Int): SearchFragment {
val fragment = SearchFragment()
val bundle = Bundle()
bundle.putInt(INDEX, index)
fragment.arguments = bundle
return fragment
}
fun searchInstance(queries: String): SearchFragment {
val fragment = SearchFragment()
val bundle = Bundle()
bundle.putString(QUERY, queries)
fragment.arguments = bundle
Log.d(TAG, bundle.getString(QUERY).toString())
return fragment
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_search, container, false)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
listSearch.setHasFixedSize(true)
filmAdapter = FilmAdapter(dataFilm)
tvShowAdapter = TvShowAdapter(dataTv)
listSearch.adapter = filmAdapter
listSearch.layoutManager = GridLayoutManager(context, 2)
viewModel = ViewModelProvider(this, ViewModelProvider.NewInstanceFactory()).get(MainViewModel::class.java)
viewModel.getSearchFilm().observe(viewLifecycleOwner, Observer {
if (it != null){
filmAdapter.setData(it.results)
showLoading(false)
}
})
viewModel.getSearchTv().observe(viewLifecycleOwner, Observer {
if (it != null){
tvShowAdapter.setData(it.results)
showLoading(false)
}
})
var index = 0
if (arguments != null){
index = arguments?.getInt(INDEX, 0) as Int
val queries = arguments?.getString(QUERY, "") as String
if (index == 1){
loadDataTv(queries)
listSearch.adapter = tvShowAdapter
}
loadDataFilm(queries)
}
}
private fun loadDataFilm(query: String){
viewModel.setSearchFilm(query)
showLoading(true)
}
private fun loadDataTv(query: String) {
viewModel.setSearchTv(query)
showLoading(true)
}
private fun showLoading(state: Boolean){
if (progressBar != null){
if (state){
progressBar.visibility = View.VISIBLE
} else {
progressBar.visibility = View.GONE
}
}
}
}
Мой метод searchInstance(queries: String)
вызывает действие и заполняет его параметры, я использую журнал, чтобы увидеть, загружен ли пакет, и оказывается, что пакет заполнен. , но почему, когда я вызываю аргумент для значения onActivityCreate ()
с ключом QUERY, не существует, но ключ INDEX можно получить