Android, как я могу динамически добавлять вкладки с данными из другого фрагмента - PullRequest
0 голосов
/ 13 ноября 2018

Для школы я должен сделать проект для Android с одним заданием и несколькими фрагментами. В моем проекте возможно добавить новую встречу (= новая вкладка) в мой MainFragment с данными из другого фрагмента. Или, по крайней мере, так и должно быть.

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что, когда я хочу вернуться к своему главному фрагменту с вкладками, я должен переделать свой фрагмент (из-за фрагментов, разрушающих Android) и переключиться на него. Но прежде чем перейти к моему фрагменту, я хочу добавить новую вкладку в TabHost с моими новыми данными. Однако этот TabHost не имеет значения.

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

Когда я нажимаю кнопку с плавающим действием, я передаю свои данные (здесь список) FragmentSwitcher (My mainActivity, который включает этот интерфейс)

fab_save.setOnClickListener {
    fragmentSwitcher!!.showMainFragmentWithNewTab(playableCharacters)
}

В mainActivity (FragmentSwitcher) я загружаю свой MainFragment с вкладками, хочу добавить новую вкладку с данными, а затем показываю свой фрагмент

override fun showMainFragmentWithNewTab(playableCharacters: ArrayList<PlayableCharacter>) {
    val mainFragment = supportFragmentManager.findFragmentByTag("MainFragment")!! as MainFragment
    mainFragment.addTab(playableCharacters)
    switchFragment(mainFragment)
}

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

fun addTab(playableCharacters: ArrayList<PlayableCharacter>) {
    spec.setIndicator("Encounter ${++teller}")
    tabHost.addTab(spec)
    tab1.layoutManager = LinearLayoutManager(context, LinearLayout.VERTICAL, false)
    tab1.adapter = EncounterAdapter(playableCharacters)
}

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

Если вы хотите лучше просмотреть мой код, вот моя ссылка на github с исходным кодом.

...