【问题标题】:android multiple fragment in one tablet activity ,then Hide and Show Based on Button Click from other Fragmentandroid 一个平板电脑活动中的多个片段,然后根据来自其他片段的按钮单击隐藏和显示
【发布时间】:2016-06-26 11:36:47
【问题描述】:

1.在我的平板电脑中我有一个活动,在那个活动中 我有 4 个片段

片段1,片段2,片段3,片段4。

我的需要:

编辑 1:

2.Fragment1 ,Fragement4 总是会显示(Frag1||Frag4)-初始阶段, 如果我从 Fragment1-->> 中单击一个按钮将打开 Fragment2(所以它会显示如下 (Frag1||Frag2||Frag4) 在活动屏幕中)。

3.如果我从Fragment2-->>点击一个按钮会打开Fragment3,然后Fragemnt4会被隐藏(所以它将在活动屏幕中显示像这样 (Frag1||Frag2||Frag3)。

4.如果我们点击Fragment3--->的关闭图标,它会显示(Fragment1||Fragment2||Fragment4)应该显示。隐藏frag4frag3 替换。

5.最后,如果我点击Fragment2--->中的关闭图标,Frag2将被删除,它会显示Activity就像开始( Frag1||Frag4)

请帮助我,如何实现这一点。

Link i referred

activity_main.xml

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:baselineAligned="false"
        android:orientation="horizontal"
        >
        <fragment
            android:id="@+id/list_Fragment1xml_mainAct_ID"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight=".08"
            class="com.knowledgeflex.lpm_qrt.Menu_Fragment1" >
        </fragment>

         <fragment
             android:id="@+id/detail_Fragmentxml_mainAct_ID"
             android:layout_width="0dp"
             android:layout_height="match_parent"
             android:layout_weight=".28"
             class="com.knowledgeflex.lpm_qrt.Option_Fragment3">
         </fragment>


        <fragment
            android:id="@+id/map_Fragmentxml_mainAct_ID"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight=".92"
            class="com.knowledgeflex.lpm_qrt.Map_Fragment4">
        </fragment>
    </LinearLayout>

Fragment1.class

public class Fragment1 extends Fragment implements OnClickListener 
{
    //Button android_btn, ios_btn, windows_btn;

    ImageView ALertIamge;



    private OnItemSelectedListener listener;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState)
    {
        View view = inflater.inflate(R.layout.menu_fragment1, container, false);


        // Initialize View
        ALertIamge=(ImageView)view.findViewById(R.id.AlertImagexml);
       // ALertIamge.setOnClickListener(this);
        ALertIamge.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v) {
               // Here I want Hide Show to Second Fragment
            }
        });
        return view;
    }

}

fragment2.class

 public class Fragment2 extends Fragment
    {



        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState)
        {
            View view = inflater.inflate(R.layout.link_fragment2, container, false);
            return view;
        }
    }

fragment3.class

public class Fragment3 extends Fragment
{



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState)
    {
        View view = inflater.inflate(R.layout.options_fragment3, container, false);
        return view;
    }
}

Fragment4.class

public class Fragment4 extends Fragment
    {



        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState)
        {
            View view = inflater.inflate(R.layout.options_fragment4, container, false);
            return view;
        }
    }

【问题讨论】:

  • 显示你得到的源代码和你尝试了什么
  • @AlexandreMartin 请检查我的问题。
  • 我做到了,但我认为 Lino 已经正确回答了您的问题,因此您应该对他的工作给予肯定,并深入了解他的解决方案。
  • 我的问题首先是隐藏和显示,而不是与其他 Fragmanet 通信
  • 然后像 Lino 所示使用添加、删除和替换事务。

标签: android android-fragments


【解决方案1】:

如果按钮在主活动内,那么你直接使用显示片段

getFragmentManager().beginTransaction().add(yourFragment, "yourTAG").commit();

相反,如果按钮位于片段 1 或 4 内,那么您必须与活动进行通信: https://developer.android.com/training/basics/fragments/communicating.html

如果您的关闭按钮位于片段 3 内,也是如此。

【讨论】:

  • 请问您可以添加任何示例吗?
  • @Lino 请检查我更新的问题。
【解决方案2】:

好的,点击关闭按钮,你必须这样做

getFragmentManager().beginTransaction().hide(this).commit();

如果您的按钮位于片段 3 中并且您想隐藏片段 3,则这表示您当前的片段 如果您想完全删除它,请使用 remove 而不是 hide 如果你想用 4 替换片段 3 或者用 3 替换片段 3 很容易

用片段 3 getFragmentManager().beginTransaction().replace(R.id.cntainer,fragment3,"fragment3").commit();替换任何​​片段

将片段 3 替换为 4

getFragmentManager().beginTransaction().replace(R.id.cntainer,fragment4,"fragment4").commit();

更新 由于您的片段是静态的,因此您可以这样做

Fragment fragment=getFragmentManager().findFragmentById(R.id.detail_Fragmentxml_mainAct_ID);
getFragmentManager().beginTransaction().hide(fragment).commit();

点击后将其放入您的体内

【讨论】:

  • 在 Fragment1 中有一个 ICon 可用,单击该图标 Fragment3 将与 Fragment 4 一起打开。如果我正在关闭(关闭 Fragment3 内的 ICon)Fragment3,只有 Fragment1 和 Fragmant 4 应该显示。 Fragmant3 将被隐藏
  • 如果您将一个框架布局 id 作为容器并希望动态添加片段,那么您可以使用替换片段,因为框架布局可以一次显示一个片段
猜你喜欢
  • 2014-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
  • 2019-05-02
  • 1970-01-01
  • 2021-05-15
相关资源
最近更新 更多