私はJavaを使い慣れていないので、私はこの方法を知りません。onCreateViewの外にあるsetOnCheckedChangeListener
それはいつも新しいSwitch.OnCheckedChangeListener
とonCreateView
関数の内部ではなく、それ自身ではないように、私はどのように私を示すためにしようとしたように私は何をしたいが、SleepTimeReminderFragment
クラスでは独自の関数にsetOnCheckedChangeListener
を「アウトソーシング」されます私はこれがうまくいくと思う方法を試みることによってこれを意味するが、それは私にエラーを与える。これはすべて可能であるか、私はちょうど何か間違ったことをしましたか?エラーは@override
で、私はそこでそれを行うことはできないと述べています。 ### at 1)、2)および3)を参照してください。
public class SleepTimeReminderFragment extends Fragment {
// ### This 1)
Switch.OnCheckedChangeListener swEnSleepTimeReminderModOCCL;
public SleepTimeReminderFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_sleep_time_reminder, container, false);
Switch swEnSleepTimeReminderMod = (Switch) view.findViewById(R.id.swEnSleepTimeReminderMod);
swEnSleepTimeReminderMod.setOnCheckedChangeListener(swEnSleepTimeReminderModOCCL);
// ### function that I want to "outsource" 2)
/*swEnSleepTimeReminderMod.setOnCheckedChangeListener(new Switch.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// set all view items but this switch to enabled
} else {
// set all view items but this switch to not enabled
}
}
});*/
// Inflate the layout for this fragment
return view;
}
// ### what I guessed this "outsourcing" would have to look like 3)
private Switch.OnCheckedChangeListener getSwEnSleepTimeReminderModOCCL() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// set all view items but this switch to enabled
} else {
// set all view items but this switch to not enabled
}
}
return swEnSleepTimeReminderModOCCL;
}
}
がちょうど' swEnSleepTimeReminderModOCCLを返し、これは正常に動作します、ありがとう
CompoundButton.OnCheckedChangeListener
インタフェースを実装し、メソッドをオーバーライドする必要があります。 – Andimanos私はそれを編集しました。 – F43nd1r