0

我已经实现了一个 ViewPager,其中包含 3 个片段和每个片段中的许多复选框。在我正在使用的 xml 布局中

android:onclick="onCheckboxClicked"

在每个片段中,我实现了一种检查复选框状态的方法:

public void onCheckboxClicked(View view) {

    boolean checked = ((CheckBox) view).isChecked();

    switch(view.getId()) {
        case R.id.cb_one:
            if (checked) 
                 Toast.makeText(getActivity(), "cb_one checked", Toast.LENGTH_SHORT).show();
            else
                 Toast.makeText(getActivity(), "cb_one unchecked", Toast.LENGTH_SHORT).show();
            break;
        case R.id.cb_two:
            // ... 
    }
}

好吧,这实际上不起作用,因为每次我选择一个复选框时应用程序都会崩溃。

E/AndroidRuntime(29283): java.lang.IllegalStateException: 无法在活动类com.testApp.SomeFragmentActivity中找到方法 onCheckboxClicked(View)用于视图类 android.widget.CheckBox 上的 onClick 处理程序,ID 为“cb_one”

我找不到合适的解决方案来让它运行。

有什么建议么?我将不胜感激任何帮助。

4

3 回答 3

1

不支持您尝试执行的操作。查看此答案以了解一些解决方法。

于 2013-03-03T17:56:06.487 回答
0

你说你把它放在片段中,但是你提供的异常文本说它正在一个名为 com.testApp.SomeFragmentActivity的活动中寻找它。

于 2013-03-03T17:46:45.430 回答
0

最好使用setOnCheckedChangeListener 而不是onClickListener来处理复选框

这是示例代码

public class MyFragment extends Fragment implements CompoundButton.OnCheckedChangeListener{

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState){
            CheckBox checkboxFirst = rootView.findViewById(R.id.checkbox_first);
            checkboxFirst.setOnCheckedChangeListener(ViewpagerFragmentFirst.this);
        
    }



    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
        case R.id.checkbox_first: {
            if (isChecked) {
                // Do something
                Log.i(TAG, "onCheckedChanged: Checked");
            } else {
                // Do something
                Log.i(TAG, "onCheckedChanged: Unchecked");
            }
            break;
        }
    } 
}
于 2021-12-08T06:01:40.983 回答