ButterKnife绑定Fragments问题

时间:2017-02-08 07:18:18

标签: android butterknife

我在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错误

3 个答案:

答案 0 :(得分:0)

因为碎片放在后台堆叠中。因此,如果第二个片段没有采取点击操作,则将其传递给第一个片段。

你也应该在第二个片段按钮上添加点击监听器。

答案 1 :(得分:0)

只需将一个点击监听器添加到第二个片段的根空体。假设R.id.root_fragment2是第二个片段的根布局的id。

@OnClick(R.id.root_fragment2)
public void onRootClicked() {
}

现在第二个片段会消耗点击次数并且不会将其传递给下面的片段。

答案 2 :(得分:0)

第二个片段位于屏幕顶部,但是当发出触摸事件时,如果第二个片段没有消耗该事件,则第一个片段仍然可以接受触摸事件。 Fragment有一个根视图,您可以像这样设置视图:rootView.setClickable(true);