Android 按钮在碎片中咔哒作响

Android 按钮在碎片中咔哒作响,android,android-fragments,button,onclicklistener,Android,Android Fragments,Button,Onclicklistener,我使用的是片段,我想注册一个按钮点击,但当我尝试使用android:onClick时,我遇到了这个错误 java.lang.IllegalStateException: Could not find method preferenceChange(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatB

我使用的是片段,我想注册一个按钮点击,但当我尝试使用android:onClick时,我遇到了这个错误

java.lang.IllegalStateException: Could not find method preferenceChange(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'btnSave'
我试着寻找不同的解决方案,但没有任何效果。我不是在玩棒棒糖

如果您正在使用

android:onClick
您需要在活动中而不是片段中调用方法,如果您想在片段中单击,您可以始终使用此示例

final Button button = (Button) view.findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
    // Perform action on click
}});

我解决问题的方法是使活动实现View.onClick侦听器:

implements View.OnClickListener
然后在Activity Created方法中设置onClick侦听器:

@Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        btnSave = (Button) getActivity().findViewById(R.id.btnSave);
        btnSave.setOnClickListener(this);
    }
然后实现了我需要实现的方法:

@Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnSave:
                preferenceChange();
                break;
            default:
                break;
        }

    }

您在哪里执行了btnSave函数?在名为PreferencesView.java的片段中,您可以发布完整的片段和活动代码吗?我使用的是tabs,我的MainActivity不创建片段,但另一个java类创建了片段,但它不是活动。我应该把它放在哪里呢?我会说,放在一个SetonClick监听器里