Сбросить / перезапустить все фрагментом по нажатию кнопки - PullRequest
0 голосов
/ 14 мая 2019

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

Значения во фрагменте A заполняются с использованием ViewModel во фрагменте B:

Отправка моих данных во фрагментB to A:

 startButton.setOnClickListener { v ->
            Log.d("Hur", activity!!.supportFragmentManager.fragments.size.toString())
            val spinnerVal = sizeSpinner.selectedItem.toString().toInt()
            val map = HashMap<String, Any>()
            wordList.sortByDescending { it.length }
            Log.d("Tag", wordList.toString())
            map["words"] = wordList
            map["rowSize"] = spinnerVal
            map["columnSize"] = spinnerVal
            loaded++
            map["loaded"] = loaded
            gameData?.data?.postValue(map)
            (activity as MainActivity).getViewPager().setCurrentItem(0)
        }

Я извлекаю значения во фрагменте A с использованием ViewPagerListener:

Фрагмент A - OnCreateView:

val pager = (activity as MainActivity).getViewPager()
        pager.addOnPageChangeListener(object : OnPageChangeListener {
            override fun onPageScrollStateChanged(state: Int) {}
            override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}

            override fun onPageSelected(position: Int) {
                if(position == 0) {
                    Log.d("Tag", "Inside")
                    activity?.let {
                        Log.d("Tag", "Hello World!")
                        val gameData = ViewModelProviders.of(it).get(GameData::class.java)
                        observeInput(gameData)
                    }
                }
            }
        })

наблюдениеВход:

      gameData.data.observe(this, Observer {
            it?.let {
                words = it["words"] as ArrayList<String>
                columnSize = it["columnSize"] as Int
                rowSize = it["rowSize"] as Int
                Log.d("yes", "Starting Game")
                if(rowSize != 0 && columnSize != 0 && !words.isEmpty() && !loaded) {
                    Log.d("inside", "yes")
                    wordGrid = Array(rowSize) { Array(columnSize) { "" } }
                    findLocations()
                    initLayouts()
                }
            }
        })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...