片段中按钮的onClickListener问题

时间:2015-04-15 02:38:08

标签: java android onclicklistener

我在片段类中有一个按钮,我想在父活动中触发一个方法。我为此实现了一个接口。

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

  

Class'从onClickListener派生的匿名类'必须被宣布为抽象的或实现抽象方法' 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不喜欢的部分代码。

6 个答案:

答案 0 :(得分:3)

在对象中使用匿名内部类:

//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);

希望这会有所帮助:)

答案 1 :(得分:3)

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

OnClick

onClick

答案 2 :(得分:1)

您可以尝试从方法

传递OnClickListener

如,

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

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

答案 3 :(得分:1)

这是使用按钮的点击事件的最佳方式。使用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
    }

}
}

如果单独使用每个点击事件,则需要更多空间。它更好地使用此代码。

答案 4 :(得分:0)

@Override方法

之上添加onClick

答案 5 :(得分:0)

或者您可以在片段 OnActivityCreated()方法中使用按钮点击Listener的以下方法。

make_move.setOnClickListener(new OnClickListener() {
          @Override
          public void onClick(View view) {

                  makeMoveCallback.makeMoveMethod();

          }
});