简体   繁体   English

在同一选项卡的viewpager中动态更改片段

[英]Dynamicaly change fragment in viewpager on same tabs

I m working on tabs . 我正在制作标签。 im using view pager . 我正在使用视图分页器。 and assigned fragment its working but i want to change content or replace fragment but i want to stay on same tab. 并分配片段其工作,但我想更改内容或替换片段,但我想保留在同一选项卡上。 suppose im in a tab when i click button on a tab i want to change fragment on tab. 假设我在选项卡中单击按钮时我想在选项卡中更改片段。 but tab should not to be change.how to do . 但是选项卡不能改变。

ViewPagerAdapter adapter = ne  ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new General(), "General");
    adapter.addFragment(new Educat(), "Education");
    adapter.addFragment(new Profetiona(), "Experience");
    adapter.addFragment(new Skills(), "Skills");

so when im in tab 0 which is general tab there is one button when i click i want to replace general fragement to infoFragement in tab 0 . 因此,当我在选项卡0(这是常规选项卡)中有一个按钮时,我单击时,我想将常规片段替换为选项卡0中的infoFragement。 i dont want to swipe tab i want only change the content or load new fragement 我不想滑动标签,我只想更改内容或加载新片段

You can use nested fragment. 您可以使用嵌套片段。 For example in your General fragment you can load ChildFragment1 at the beginning, then when after the button click replace it with ChildFragment2. 例如,在您的常规片段中,您可以在开始时加载ChildFragment1,然后在按钮后单击,将其替换为ChildFragment2。

fragment_general.xml fragment_general.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:orientation="vertical">

    <View
        android:id="@+id/view_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</FrameLayout>

GneralFragment.java GneralFragment.java

//Call this at the beginning
private void loadChildFragment1(){
    getChildFragmentManager()
                    .beginTransaction()
                    .replace(R.id.view_container,
                            new ChildFragment1()
                    .commit();
}

//Call this after the click
private void loadChildFragment2(){
    getChildFragmentManager()
                    .beginTransaction()
                    .replace(R.id.view_container,
                            new ChildFragment2()
                    .commit();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM