我有一个应用程序,我在其中交换两个片段。片段在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();
}
});
}
答案 0 :(得分:0)
我认为你的问题就在这一行:
ft.hide(frag2).show(frag2);
您想要隐藏frag1
并显示frag2
:
ft.hide(frag1).show(frag2);
答案 1 :(得分:-1)
是的,答案与活动周期有关。您需要覆盖onCreateView并将onClickListener放在其中。只有在首次创建活动时才会调用onCreate。之后立即调用OnCreateView,但是当您从另一个活动返回后将活动恢复到前面时也会调用它。