Android 按钮在碎片中咔哒作响
我使用的是片段,我想注册一个按钮点击,但当我尝试使用android:onClick时,我遇到了这个错误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
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监听器里