Android 在后台单击片段时,后堆栈计数增加
在每个片段中单击textView时,我正在添加下一个片段 我的流量是 MainActivity=>片段A=>片段B=>片段C=>片段D 但每次我点击片段D中的textView,片段D就会被添加,并且回栈计数会增加。 我在片段D中没有任何单击侦听器。那么为什么会发生这种情况呢 这是我的主要活动=>Android 在后台单击片段时,后堆栈计数增加,android,android-fragments,fragment-backstack,Android,Android Fragments,Fragment Backstack,在每个片段中单击textView时,我正在添加下一个片段 我的流量是 MainActivity=>片段A=>片段B=>片段C=>片段D 但每次我点击片段D中的textView,片段D就会被添加,并且回栈计数会增加。 我在片段D中没有任何单击侦听器。那么为什么会发生这种情况呢 这是我的主要活动=> buttonAddFragment.setOnClickListener(new View.OnClickListener() { @Override publi
buttonAddFragment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AFragment fragment = new AFragment();
addFragment(fragment, "MainActivity");
}
});
public void addFragment(Fragment fragment, String callingFrom) {
Log.e("Call =>", callingFrom);
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fragmentContainer, fragment, "demoFragment");
fragmentTransaction.addToBackStack("tag");
fragmentTransaction.commit();
}
片段A=>
mTextViewClick = view.findViewById(R.id.mTextViewClick);
mTextViewClick.setText("A Fragment");
mTextViewClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
BFragment fragment=new BFragment();
((MainActivity)getActivity()).addFragment(fragment,"Fragment A");
}
});
所有片段都与片段A具有相同的代码此处发生的事情实际上是单击片段C,因为片段D的视图上没有声明接触消费者,并且由于您使用的是
FragmentTransaction.add()
函数,因此先前的片段视图不会被销毁或替换为新片段
因此,要解决这个问题,只需将这些属性添加到片段D的根视图中:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
...
android:focusable="true"
android:clickable="true"
android:focusableInTouchMode="true">
....
</RelativeLayout>
....
或者确保您已经使用
FragmentTransaction.replace()
方法替换了以前的片段视图。尝试这个答案我已经尝试过了,但它对我不起作用