1

我正在使用 Fragments 的支持版本 (android.support.v4.app.Fragment) 编写一个 Android 应用程序。

我的代码中有一个奇怪的错误,我不知道如何修复它。当我用另一个 Fragment 替换 Fragment 时,被替换的 Fragment 仍然处于活动状态并接收触摸事件。从被替换的 Fragment 中点击 Button 的位置仍会触发 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" />

...
4

1 回答 1

4

您只能替换容器视图中的片段。这意味着您需要一个容器(而不是片段本身)。

<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();
于 2013-08-23T15:02:23.987 回答