Java'ya yeniyim ve bunu nasıl yapacağımı bilmiyorum.setOnCheckedChangeListener onCreateView dışında
Ne o da kendi içinde oldukça olağan yeni Switch.OnCheckedChangeListener
fakat onCreateView
işlevi içinde olmadığını bu yüzden ben nasıl göstermeye çalıştık gibi SleepTimeReminderFragment
sınıfta da kendi işlevine setOnCheckedChangeListener
"dış kaynak" yapmak istediğim Bunun anlamı, bunun nasıl çalışması gerektiğini düşünüyorum, ama bu bana hatalar veriyor. Yani bu mümkün mü yoksa yanlış bir şey mi yaptım? Hata, @override
ile olduğundan, bunu yapamayacağımı belirtiyor. Bkz. ###, 1), 2) ve 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;
}
}
teşekkür ederiz yöntemini
CompoundButton.OnCheckedChangeListener
arabirimini uygulayan ve geçersiz kılmak gerekir, bu sadece 'swEnSleepTimeReminderModOCCL dönmek, gayet iyi çalışıyor;' silinmelidir . – AndimanosBunu düzenledim .. – F43nd1r