我创建了一个应用程序,其中我具有 1个活动和 8个片段,其中我将每个片段都添加到了活动中。但我的问题是每个片段彼此重叠。我会更改每个片段的背景颜色,但是当我单击上一个片段的“空白”按钮时,就会被单击。
请给我一些建议,以摆脱这种情况。
Main_Activity.class
public class ActRegistration extends AppCompatActivity {
FragmentManager fm;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_registration);
fm = getSupportFragmentManager();
loadFragment(new FragmentRegLogSkip(), FragmentRegLogSkip.FRAGMENT_KEY);
}
public void loadFragment(Fragment fragmentName, String fragmentKey) {
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.add(R.id.id_registration_layout_frame, fragmentName);
fragmentTransaction.addToBackStack(fragmentKey);
fragmentTransaction.commit();
}
}
Frag_1.class
public class FragmentRegLogSkip extends Fragment implements View.OnClickListener {
private Activity activity;
private Context context;
public static final String FRAGMENT_KEY = "fragment_reg_log_skip";
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
context = getContext();
LanguageChanger.changeLanguage(context);
View view = inflater.inflate(R.layout.act_registration_screen_login, container, false);
return view;
}
}
答案 0 :(得分:2)
不要忘记将list1 = [i for i in list1 if i != 'error']
和android:clickable="true"
添加到第二个片段的父视图中,这样它就可以捕获点击,并且不会传播到下面的片段。像这样:
android:focusable="true"
答案 1 :(得分:1)
您正在使用fragmentTransaction.add()
,它不会删除以前的片段-如果要删除另一个片段的视图,请使用fragmentTransaction.replace()
。
注意FragmentManager
会在重新创建您的活动(即savedInstanceState != null
时)自动恢复以前添加的所有片段。因此,您将要确保仅添加一次初始片段-savedInstanceState
为空时。
if (savedInstanceState == null) {
loadFragment(new FragmentRegLogSkip(), FragmentRegLogSkip.FRAGMENT_KEY);
}
答案 2 :(得分:0)
在第二个片段布局文件的“父标签”中,添加以下内容:-
android:clickable="true"
android:focusable="true"
然后,当您单击任何视图时,它不会单击上一个片段。