我在Fragments中遇到了ButterKnife的问题。
例如,我有2个片段,第一个片段在视图中间有一个按钮。我用它绑定它:
unbinder = ButterKnife.bind(this, rootView);
然后我实施@BindView
和@OnClick
:
@BindView(R.id.btnSignUp)
Button btnSignUp;
@OnClick(R.id.btnSignUp)
public void signUpClick() {
在SignUpClick当前片段替换为新片段:
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setAllowOptimization(true);
transaction.replace(R.id.frame_layout, fragment);
transaction.addToBackStack(String.valueOf(fragment.getClass()));
transaction.commit();
第二个片段还包括一个屏幕顶部的按钮,带有BindView实现。
问题是 - 如果我在空白区域的屏幕中间点击,signUpClick被解雇,不知道我的错误在哪里或者是ButterKnife错误
答案 0 :(得分:0)
因为碎片放在后台堆叠中。因此,如果第二个片段没有采取点击操作,则将其传递给第一个片段。
你也应该在第二个片段按钮上添加点击监听器。
答案 1 :(得分:0)
只需将一个点击监听器添加到第二个片段的根空体。假设R.id.root_fragment2
是第二个片段的根布局的id。
@OnClick(R.id.root_fragment2)
public void onRootClicked() {
}
现在第二个片段会消耗点击次数并且不会将其传递给下面的片段。
答案 2 :(得分:0)
第二个片段位于屏幕顶部,但是当发出触摸事件时,如果第二个片段没有消耗该事件,则第一个片段仍然可以接受触摸事件。 Fragment有一个根视图,您可以像这样设置视图:rootView.setClickable(true);