片段中按钮的 onClickListener 问题

Issue with onClickListener for Button in Fragment

我在片段 class 中有一个按钮,我想在父 activity 中触发一个方法。我已经为此实现了一个接口。

我的问题是 View.onClickListener 给我以下错误:

Class 'Anonymous class derived from onClickListener' must either be declared abstract or implement abstract method 'onClick(View)' in 'onClickListener'

这很奇怪,因为我正在执行 onClick(View)。

这是我片段中的代码:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(com.zlaporta.chessgame.R.layout.gamedescfragment, container, false);
        final Button make_move = (Button) v.findViewById(R.id.make_move);
        make_move.setOnClickListener(new ***View.OnClickListener()*** {
            public void OnClick(View v) {
                makeMoveCallback.makeMoveMethod();
            }
        });

星星表示 Android Studio 不喜欢的代码部分。

onClick方法上方添加@Override

在对象中使用匿名内部 class 执行此操作:

//declaring OnClickListener as an object
private OnClickListener btnClick = new OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    }
};

//passing listener object to button
make_move.setOnClickListener(btnClick);

希望这会有所帮助:)

您能否尝试通过方法传递 OnClickListener

例如,

private View.OnClickListener getButtonOnClickListener() {
    return new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // this is the code
        }
    };
}

然后使用 make_move.setOnClickListener(getButtonOnClickListener());

这是对按钮使用点击事件的最佳方式。使用 onClick 侦听器实现。使用下面的代码。

public class MyFragment extends Fragment implements OnClickListener {
Button mButton;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,   Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.main_layout, null);
    mButton = (Button) view.findViewById(R.id.button1);
    mButton.setOnClickListener(this);

    return view;
}

@Override
public void onClick(View v) {

    if (v == mButton) {
        // Do something on click button
    }

}
}

如果单独使用每个点击事件,则需要更多 space。最好使用此代码。

或者您可以在 Fragment.

OnActivityCreated() 方法中使用以下按钮点击监听器的方法
make_move.setOnClickListener(new OnClickListener() {
          @Override
          public void onClick(View view) {

                  makeMoveCallback.makeMoveMethod();

          }
});

只是一个错字:替换方法名称

OnClick

onClick