片段View.OnClickListener无法识别点击

时间:2019-03-22 17:57:33

标签: android butterknife

“我的片段”实现了View.OnClickListener,但根本无法识别任何点击。

片段代码:

public class StartFragment implements View.OnClickListener {

    @BindView(R.id.my_button)
    Button mybutton;

    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.layout_start, container, false);
        ButterKnife.bind(this, view);
        mybutton.setOnClickListener(this);
        return view;
    }

    @Override
    public void onClick(View v) {
        Log.d("START", "Click Detected");
        switch (v.getId()){
            case R.id.mybutton:

        }
    }
}

我不了解这种行为,为什么它无法识别任何点击?我在这里想念什么吗?

我删除了我在Fragment代码中拥有的其他一些按钮,以及一些对此问题不重要的覆盖方法。

编辑:

即使我尝试将按钮声明为:

    Button myButton= view.findViewById(R.id.mybutton);
    myButton.setOnClickListener(this);
onCreateView内的

我仍然无法识别点击。按照建议尝试用ButterKnife尝试@OnClick(R.id.your_btn)也无济于事。

2 个答案:

答案 0 :(得分:1)

使用黄油刀时。尝试黄油刀 @OnClick(R.id.your_btn)。 否则,在没有黄油刀的情况下找到您的视图,然后检查它是否有效。希望这会对您有所帮助。

答案 1 :(得分:0)

我希望这是可行的。

public class StartFragment implements View.OnClickListener {

@BindView(R.id.my_button)

@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.layout_start, container, false);
    ButterKnife.bind(this, view);
   Button myButton= view.findViewById(R.id.mybutton);
   myButton.setOnClickListener(this);
    return view;
  }
}
 @Override
public void onClick(View v) {
    Log.d("START", "Click Detected");
    switch (v.getId()){
        case R.id.mybutton:

    }
}