0

我有两个片段:

  • 第一个片段由中间的一个大按钮组成 - 我OnClickListener为此视图设置了一个(以编程方式),一旦单击,它将第一个片段替换为第二个片段。
  • 第二个片段是一个空片段

首先,我显示片段编号。1. 然后我按下按钮,正如预期的那样,我看到了第二个片段。

问题:一旦显示第二个片段并且我单击它的中间 - 它会触发第一个片段OnClickListener中按钮后面的代码,即使我目前正在显示一个没有按钮的空片段。

想法?

这是代码:

public void onLargeButtonClick(View view){
        secondFragment fragment = new secondFragment();
        fragmentFactory.replaceFragment(fragment);
}

void replaceFragment(Fragment fragment){
    FragmentManager fragmentManager = activity.getSupportFragmentManager();
    String fragmentName = fragment.getClass().getSimpleName();
    Fragment existingFragment = fragmentManager.findFragmentByTag(fragmentName);
    if (existingFragment != null)
        fragmentManager.popBackStack(fragmentName, FragmentManager.POP_BACK_STACK_INCLUSIVE);

        FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
        ft.replace(R.id.first_fragment, fragment);
        ft.addToBackStack(null);
        ft.commit();
}

主布局包含我替换的片段

   <fragment
            android:name="com.app.firstfragment"
            android:id="@+id/first_fragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >
    </fragment>
4

3 回答 3

0

您可以通过将根布局元素之一设置为android:clickable="true".

这将拦截对其的点击,并防止它们到达其下方的片段。

于 2012-10-28T13:14:02.580 回答
0

关于为什么会发生这种情况并不是一个很好的答案,但我的应用程序中发生了类似的事情。您可以尝试(或确保)几件事:

  • 使用 FragmentManager 删除第一个片段
  • 删除OnClickListener第一个片段的onPause中的按钮
于 2012-10-28T13:14:27.593 回答
0

我认为你不能替换在 xml 中添加的片段。

首先删除android:name="com.app.firstfragment"

然后在您的活动中通过代码添加第一个片段

protected void onCreate(Bundle savedInstanceState) {
            Fragment firstFragment = new firstFragment();
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.add(R.id.first_fragment, firstFragment).commit();
    }
于 2012-10-28T13:30:07.670 回答