我正在使用Fragments的支持版本(android.support.v4.app.Fragment)编写Android应用程序。
我的代码中有一个奇怪的错误,我不知道如何修复它。 当我用另一个片段替换片段时,替换片段仍处于活动状态并接收触摸事件。从替换的片段中点击按钮的位置仍将触发OnClick事件。
我真的不知道如何解决这个问题。有人能帮助我吗?
Java代码
Fragment newFragment = new LoginActivityRegisterFragment();
...
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.replace(R.id.login_fragment, newFragment);
ft.commit();
...
XML布局
...
<fragment
class="de.myapp.fragments.LoginActivityMainFragment"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/login_fragment" />
...
答案 0 :(得分:3)
您只能在容器视图中替换片段。这意味着您需要一个容器(而不是片段本身)。
<FrameLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/container" />
然后你可以通过添加一个片段来初始化它。
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.add(R.id.container, new LoginActivityMainFragment());
ft.commit();
然后你可以替换它。
Fragment newFragment = new LoginActivityRegisterFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.replace(R.id.container, newFragment);
ft.commit();