onClick(mis)为以前显示的View触发?

时间:2012-10-28 13:07:16

标签: android

我有两个片段:

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

首先,我显示片段号。 1.然后按下按钮,按照预期,我看到第二个片段。

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

想法?

以下是代码:

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>

3 个答案:

答案 0 :(得分:0)

您可以通过将其中一个根布局元素设置为android:clickable="true"来使新的空片段可以点击。

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

答案 1 :(得分:0)

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

  • 使用FragmentManager
  • 删除第一个片段
  • 删除第一个片段的onPause中按钮的OnClickListener

答案 2 :(得分: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();
    }