片段彼此重叠...上一个片段正在点击

时间:2019-03-04 06:45:36

标签: android android-fragments android-activity

我创建了一个应用程序,其中我具有 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;
}
}

3 个答案:

答案 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"

然后,当您单击任何视图时,它不会单击上一个片段。