【问题标题】:Android fragments cant hideAndroid碎片无法隐藏
【发布时间】:2015-02-11 21:47:03
【问题描述】:

我有一个应用程序可以在其中交换两个片段。片段位于 LinearLayout 中。在线性布局下方,我有图标(ImageViews),单击时会隐藏或显示相应的片段。当应用程序首次加载时,一切都很好。在我退出我的应用程序并使用另一个应用程序然后返回到我的应用程序后,当我单击图标(ImageView)时,片段不会隐藏/显示。为什么会这样?是否与活动生命周期有关?

xml_layout:

       <LinearLayout 
                android:id="@+id/Linearlayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                >


            </LinearLayout>









   onCreate()
    {
          ft = this.getSupportFragmentManager()
                    .beginTransaction();
          frag1= new Frag1();
          frag2= new  Frag2();
          ft.add(R.id.linearlayout,frag1);
          ft.add(R.id.linearlayout, frag2);
          ft.hide(frag1).show(frag2);
          ft.commit();



           icon1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {


                ftt =  MainActivity.this.getSupportFragmentManager()
                        .beginTransaction();
                ftt.hide(frag2).show(frag1);

                ftt.commit();
            }
        });


     }

【问题讨论】:

  • 显示图片点击的代码
  • @vinitius-我已经发布了

标签: android android-layout android-fragments android-fragmentactivity


【解决方案1】:

我认为你的问题出在这一行:

ft.hide(frag2).show(frag2);

你想隐藏frag1并显示frag2

ft.hide(frag1).show(frag2);

【讨论】:

    【解决方案2】:

    是的,答案与活动周期有关。您需要覆盖 onCreateView 并将您的 onClickListener 放在其中。 onCreate 仅在首次创建活动时被调用。之后会立即调用 OnCreateView,但是当您的 Activity 从另一个 Activity 返回后回到最前面时也会调用它。

    【讨论】:

    • 图标不是 Fragment 的一部分,它们是 Activity 布局的一部分
    • Sara,我编辑了我的评论,将“片段”更改为“活动”。但我对生命周期的评论是成立的。 OnCreate 仅在首次创建活动时调用,或者如果它被销毁,则在重新创建活动时调用。当您移动到另一个应用程序时,您的 Activity 不一定会被 Android 销毁,它会被放入堆栈中,并且仅在必要时由于内存不足而被销毁。您的 onClickListener 需要在另一个方法中,当您的活动再次可见时将调用该方法。
    猜你喜欢
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 2013-09-30
    • 2014-01-01
    • 1970-01-01
    相关资源
    最近更新 更多