java - ViewPager内部 fragment 返回父 fragment 时不显示

标签 java android android-studio android-fragments kotlin

当我通过操作栏更改父 fragment 时,ViewPager2 内部 fragment 不显示

最初它显示得非常好,但是当我通过操作栏更改为不同的 fragment 并返回时, View 寻呼机不再显示其内容!

这是主要 Activity

private const val NUM_PAGES = 5
class MainActivity : AppCompatActivity() {
    private lateinit var appBarConfiguration: AppBarConfiguration
    private lateinit var mPager: ViewPager2
    private var Defined = false


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val toolbar: Toolbar = findViewById(R.id.toolbar)
        setSupportActionBar(toolbar)

        val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
        val navView: NavigationView = findViewById(R.id.nav_view)
        val navController = findNavController(R.id.nav_host_fragment)
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        appBarConfiguration = AppBarConfiguration(
            setOf(
                R.id.nav_home, R.id.nav_deposit,R.id.nav_account,R.id.nav_portfolio, R.id.nav_pager
            ), drawerLayout
        )
        setupActionBarWithNavController(navController, appBarConfiguration)
        navView.setupWithNavController(navController)
    }


    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        // Inflate the menu; this adds items to the action bar if it is present.
        menuInflater.inflate(R.menu.main, menu)
        Defined = true
        PagerWorker()
        return true
    }

    override fun onChildTitleChanged(childActivity: Activity?, title: CharSequence?) {
        Log.d("Pager Worker","ChildTitleChanged")
        super.onChildTitleChanged(childActivity, title)
    }

    override fun onSupportNavigateUp(): Boolean {
        val navController = findNavController(R.id.nav_host_fragment)
        return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
    }

    fun PagerWorker(){
        /** MAKING PAGER STUFF **/
        if(Defined == true) {
            Log.d("Pager Worker", "1")
            val pagerAdapter = ScreenSlidePagerAdapter(this)
            mPager = findViewById(R.id.pager)
            mPager.adapter = pagerAdapter


        }
    }
}

class ScreenSlidePagerAdapter(fa: FragmentActivity) : FragmentStateAdapter(fa) {
    override fun createFragment(position: Int): Fragment {
        return SlideFragment()
    }
    override fun getItemCount(): Int = NUM_PAGES
    fun getItem(position: Int):Fragment{
        return SlideFragment()
    }


}

这是幻灯片 fragment 代码

package com.main.treasurex.ui.home

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProviders
import com.main.treasurex.R

class SlideFragment : Fragment() {

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

}

提前谢谢您!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

最佳答案

已修复:

创建了第二个要调用的 Activity 以显示在 ViewPager 上!!!

关于java - ViewPager内部 fragment 返回父 fragment 时不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58248806/

相关文章:

java - 需要将字符串资源转换为 View 页面中的字符串

android - 如何使用适配器在单击按钮时添加 ListView 项目

android - 默认 DatePicker 和 TimePicker 标签未本地化

java - Flink 作业 : Getting InvalidClassException: com. fastxml.jackson.databind.ObjectMapper

java - 在 session 中更改 java bean 中的某些属性

java - Groovy 代码 - 使用正则表达式匹配字段并在不匹配时生成空白值

Android studio - 构建脚本错误,发现不支持的 Gradle DSL 方法 : 'android()' !

java - 从 ruby​​ 检索 Java 列表

java - Android Spinner - 防止刷新后关闭

android - 将 jar 库导入 android-studio