我的申请非常简单。 O具有1个活动和三个片段。 加载活动时,它将加载包含ViewPager的片段。 我使用ViewPager显示新闻,ViewPager中的第一个片段显示新新闻,第二个片段显示已读新闻。 一切正常,但是当我单击新闻并打开ContentFragment以显示它,然后单击“后退”按钮以使用ViewPager返回片段时,一切正常。 ContentFragment消失,但是带有ViewPager的Fragment保持空白。我调试并确保调用了诸如onCreateView之类的方法,但是片段仍然为空,我很困惑。 怎么了 谢谢
MainActivity
KeyboardNavigation.TabNavigation="None"
启动时,它会显示带有ViewPager的片段
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.MainActivity"
android:id="@+id/activity_main_layout_id">
<androidx.coordinatorlayout.widget.CoordinatorLayout android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main_content"
>
</RelativeLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<com.google.android.material.navigation.NavigationView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
android:id="@+id/navigation_view"
>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/swipe_refresh_layout"
>
<androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_recycler"
>
</androidx.recyclerview.widget.RecyclerView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.google.android.material.navigation.NavigationView>
</androidx.drawerlayout.widget.DrawerLayout>
NewsPagerFragment
private fun showList() {
val fragmentTransaction = supportFragmentManager.beginTransaction()
val newsPagerFragment = NewsPagerFragment()
fragmentTransaction.replace(R.id.main_content, newsPagerFragment)
fragmentTransaction.commit()
}
在ViewPager中用于显示新闻的NewssListDataFragment。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_height="match_parent"
tools:context=".fragment.NewsPagerFragment"
android:orientation="vertical"
android:id="@+id/news_list_fragment">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/swipe_refresh_layout"
>
<androidx.viewpager.widget.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.viewpager.widget.ViewPager>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adUnitId="@string/ads_banner_id_test"
ads:adSize="BANNER"/>
</LinearLayout>
当我们点击一些新闻时,它就会呼叫
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_height="match_parent"
tools:context=".fragment.NewsPagerFragment"
android:orientation="vertical"
android:id="@+id/news_list_fragment">
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/news_list_recycler"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager">
</androidx.recyclerview.widget.RecyclerView>
</LinearLayout>
NewsContentFragment
private fun onPreviewNewsClick(news: PostEntity) {
val contentFragment = NewsContentFragment()
val transaction = fragmentManager.beginTransaction()
transaction.replace(R.id.main_content, contentFragment)
transaction.commit()
}