我有两个片段:
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>
答案 0 :(得分:0)
您可以通过将其中一个根布局元素设置为android:clickable="true"
来使新的空片段可以点击。
这将拦截对它的点击,并防止它们到达它下面的片段。
答案 1 :(得分:0)
对于为什么会发生这种情况并不是一个很好的答案,但我的应用程序中发生了类似的事情。您可以尝试(或确保)的一些事情:
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();
}