Создание активности с вкладками в нижней части навигации / фрагменте - PullRequest
0 голосов
/ 16 апреля 2019

В настоящее время я пытаюсь объединить два разных вида деятельности. Одним из них является моя основная активность, которая является нижней навигационной активностью, а другая - моя вкладка, которая является моей активностью с вкладками. Я не уверен, как сделать так, чтобы мой TabbedActivity вписывался в мою MainActivity, поэтому в одном разделе нижней навигации (домашняя страница) размещались бы вкладки. Могу ли я создать фрагмент, который является родительским элементом с активностью tabbed И если да, то как бы это выглядело?

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

class MainActivity: AppCompatActivity () {

private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
    when (item.itemId) {
        // TODO this tab will have a tabbed frag
        R.id.navigation_home -> {
            val your_array_list = ArrayList<String>()
            your_array_list.add("one")
            your_array_list.add("two")

            val arrayAdapter = ArrayAdapter(this,
                android.R.layout.simple_list_item_1,
                your_array_list)

            menu.adapter = arrayAdapter

            return@OnNavigationItemSelectedListener true
        }
        R.id.navigation_dashboard -> {
            val your_array_list = ArrayList<String>()
            your_array_list.add("three")
            your_array_list.add("four")

            val arrayAdapter = ArrayAdapter(this,
                android.R.layout.simple_list_item_1,
                your_array_list)

            menu.adapter = arrayAdapter

            return@OnNavigationItemSelectedListener true
        }
        R.id.navigation_notifications -> {
            val your_array_list = ArrayList<String>()
            your_array_list.add("five")
            your_array_list.add("six")

            val arrayAdapter = ArrayAdapter(this,
                android.R.layout.simple_list_item_1,
                your_array_list)

            menu.adapter = arrayAdapter

            return@OnNavigationItemSelectedListener true
        }
    }
    false
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
}

}

class TabbedActivity : AppCompatActivity() {

private var mSectionsPagerAdapter: SectionsPagerAdapter? = null

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_tabbed)

    setSupportActionBar(toolbar)
    mSectionsPagerAdapter = SectionsPagerAdapter(supportFragmentManager)

    container.adapter = mSectionsPagerAdapter

    container.addOnPageChangeListener(TabLayout.TabLayoutOnPageChangeListener(tabs))
    tabs.addOnTabSelectedListener(TabLayout.ViewPagerOnTabSelectedListener(container))
}


override fun onCreateOptionsMenu(menu: Menu): Boolean {
    menuInflater.inflate(R.menu.menu_tabbed, menu)
    return true
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    val id = item.itemId

    if (id == R.id.action_settings) {
        return true
    }

    return super.onOptionsItemSelected(item)
}

inner class SectionsPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) {

    override fun getItem(position: Int): Fragment {
        when(position) {
            0 -> return PlaceholderFragment()
            else -> return PlaceholderFragment2()
        }

    }

    override fun getCount(): Int {
        return 3
    }
}

class PlaceholderFragment : Fragment() {

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?): View? {
        val rootView = inflater.inflate(R.layout.fragment_tabbed, container, false)

        val your_array_list = ArrayList<String>()
        your_array_list.add("a")
        your_array_list.add("b")

        val arrayAdapter = ArrayAdapter(
            context!!,
            android.R.layout.simple_list_item_1,
            your_array_list
        )

        rootView.tabsMenu.adapter = arrayAdapter

        return rootView
    }
}
}

В настоящее время я не могу объединить эти два вида деятельности. В идеале я бы мог видеть вкладки в одном разделе моей нижней навигации.

...