Android Kotlin所有片段都被称为



我遇到的问题是,当应用程序启动时,我的所有片段都会调用,所以当我在第二个片段上进行吐司时,它会出现在第一个片段上

这是我的活动代码

class HomePage : AppCompatActivity() {
    var adapter: FPA? = null
    val manager = supportFragmentManager
    private lateinit var drawer: DrawerLayout
    private lateinit var toggle: ActionBarDrawerToggle
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(null)
        setContentView(R.layout.home_page_act)
        adapter = FPA(supportFragmentManager)
        container.adapter = adapter
        container.addOnPageChangeListener(android.support.design.widget.TabLayout.TabLayoutOnPageChangeListener(tabs))
        tabs.addOnTabSelectedListener(android.support.design.widget.TabLayout.ViewPagerOnTabSelectedListener(container))
    }
    class FPA(fm: FragmentManager) : FragmentPagerAdapter(fm) {
        override fun getItem(position: Int): Fragment {
            if(position==0 )
                return TrainingForSale()
            else if(position==1)
                return Shops()
            else
                return  Health()
        }
        override fun getCount(): Int {
            return 3
        }
    }
    fun ShowFramentShops (){
        val transaction = manager.beginTransaction ()
        val fragmet = Shops()
        transaction.replace(R.id.container,fragmet)
        transaction.addToBackStack(null)
        transaction.commit()
    }
}

这是我的片段页面片段(1(

class Shops : Fragment() {
    override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?,
                              savedInstanceState: Bundle?): View? {
        // Inflate the layout for this fragment
        return inflater!!.inflate(R.layout.shops_fragment, container, false)
    }
    override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
        super.onCreate(null);
        //UserInformation.TrainingFilter=""
        //UserInformation.TrainingList.clear()
    }
    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(null)
        Toast.makeText(activity,"Shopes",Toast.LENGTH_LONG).show()
    }
}// Required empty public constructor

我的第二片

class Health : Fragment() {
    override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?,
                              savedInstanceState: Bundle?): View? {
        // Inflate the layout for this fragment
        return inflater!!.inflate(R.layout.health_fragment, container, false)
    }
    override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
        super.onCreate(null);
        super.onViewCreated(view, savedInstanceState)
        Toast.makeText(activity,"Health", Toast.LENGTH_LONG).show()
    }
}// Required empty public constructor

因此,当我运行该应用程序时,两个吐司都会出现在同一页面

ViewPager不仅会创建当前页面,而且还将创建之前或之后的某些页面。使用setOffscreenPageLimit(int),您可以稍微调整这些值。

将应保留在闲置状态的视图层次结构中的当前页面的任何一侧。需要在需要时从适配器中重新创建此限制的页面。

最新更新