0

我有一个应用程序,我交换了两个碎片。这些片段位于LinearLayout中。在linearlayout下面,我有图标(ImageViews),当点击时隐藏或显示适当的片段。当应用第一次加载时,一切都很好。在我退出我的应用程序并使用其他应用程序后,返回到我的应用程序片段不会隐藏/显示当我单击图标(ImageView)。这是怎么回事?它与活动生命周期有关吗?Android碎片不能隐藏

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(); 
      } 
     }); 


    } 
+0

显示图片代码点击 – vinitius 2015-02-11 21:50:35

+0

@ vinitius我已发布它 – 2015-02-11 21:54:20

回答

0

我觉得你的问题是在这条线:

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

要隐藏​​并显示frag2

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

是,答案涉及到活动周期。你需要重写onCreateView,并把onClickListener放在里面。 onCreate只在第一次创建活动时被调用。之后立即调用OnCreateView,但当您从其他活动返回时将活动重新置于前面时,也会调用OnCreateView。

+0

图标不是片段的一部分,它们是活动布局 – 2015-02-11 23:37:10

+0

Sara的一部分,我编辑了我的评论以将'fragment'更改为'活动。'但我对生命周期的评论就是这样。只有在第一次创建活动时,OnCreate才会被调用,或者当它被重新创建时被取消销毁。当你移动到另一个应用程序时,你的活动不一定被Android销毁,它被放在堆栈上,并且由于内存不足而在必要时被销毁。你的onClickListener需要在另一个方法中,当你的活动再次可见时,这个方法将被调用。 – 2015-02-12 00:09:36