我有一个viewPager,其中包含三个选项卡,即聊天室,秘密聊天和聊天请求。但是正如您所看到的,我不希望在应用程序上进行秘密聊天并立即请求,因此我从xml和chat activity.kt(Kotlin)中删除了这些选项卡,并且您仅看到了聊天室下面的活动代码。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
param1 = it.getString(ARG_PARAM1)
param2 = it.getString(ARG_PARAM2)
}
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? =// Inflate the layout for this fragment
inflater.inflate(R.layout.fragment_chat, container, false)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val viewPager = view.findViewById<ViewPager>(R.id.viewpager)
setupViewPager(viewPager)
}
private fun setupViewPager(viewPager: ViewPager) {
val adapter = ChatAdapter(fragmentManager)
adapter.addFragment(ChatRoomsFragment(), "Chat Rooms")
viewPager.adapter = adapter
}
现在,当我打开聊天时,仅显示聊天室标签。太酷了,但是当我在应用程序中移动并返回到聊天选项卡时,聊天室布局消失并留下空白屏幕。我相信这是因为该选项卡仍由viewPager设置,而该viewPager仍希望滚动浏览三个选项卡,或者/并且因为我在onViewCreated中具有viewPager,这意味着每当该流程再次到达它时,它都希望显示已删除的选项卡?
我认为将viewPager与onCreateView合并可能会解决我的问题,但我不知道具体如何。我也认为调整某个地方的viewPager类或活动可能会有所帮助,但我又不知道该怎么做。
为了清楚我想要的内容,在长篇解释之后,我想消除onViewCreated进程,并将该进程应该与onCreateView进程合并。如果有办法可以将所有两个进程直接添加到onCreate itslef或superOnCreate中,那也很好。如果社区准则失败,请提供帮助和原谅。
下面是我删除的包含其他两个选项卡的xml和kt活动。
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorColor="@color/colorAccent"
app:tabSelectedTextColor="@color/theme_primary"
app:tabTextColor="@android:color/darker_gray" />
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
The activity under oncreate view at ChatFragment.kt
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val viewPager = view.findViewById<ViewPager>(R.id.viewpager)
setupViewPager(viewPager)
val tabs = view.findViewById<TabLayout>(R.id.tabs)
tabs.setupWithViewPager(viewPager)
}
private fun setupViewPager(viewPager: ViewPager) {
val adapter = ChatAdapter(fragmentManager)
adapter.addFragment(ChatRoomsFragment(), "Chat Rooms")
adapter.addFragment(PrivateChatFragment(), "Secret Chat")
adapter.addFragment(RequestFragment(), "Chat Requests")
viewPager.adapter = adapter
}
谢谢您的期待。
通过将聊天室片段kt中的方法转移到聊天片段kt上来解决,因为当我拥有三个标签时,聊天片段是托管所有标签的活动。现在,它仅托管“聊天室”选项卡,因此,聊天室片段活动方法与聊天片段活动方法几乎是正确的。