Я пытаюсь включить и отключить EditText в Android с помощью коммутатора.
Если переключатель установлен, я хочу, чтобы EditText был включен, и я мог писать в нем. Если переключатель ложный, я хочу, чтобы EditText был отключен, и я не могу писать в нем.
Я пробовал так, но это не работает.
Вот XML:
<?xml version = "1.0" encoding = "utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
xmlns:tools = "http://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent">
<Switch
android:id = "@+id/switchGaranzia"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "Garanzia"
app:layout_constraintBottom_toTopOf = "@+id/numeroArticoliText"
app:layout_constraintEnd_toEndOf = "parent"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintTop_toBottomOf = "@+id/descizioneArticoloText"
app:layout_constraintVertical_bias = "0.298" />
<EditText
android:id = "@+id/testEnabeld"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_marginTop = "20dp"
android:ems = "10"
android:inputType = "textPersonName"
android:text = "Prova"
app:layout_constraintBottom_toBottomOf = "parent"
app:layout_constraintEnd_toEndOf = "parent"
app:layout_constraintHorizontal_bias = "0.497"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintTop_toBottomOf = "@+id/switchGaranzia"
app:layout_constraintVertical_bias = "0.0" />
</androidx.constraintlayout.widget.ConstraintLayout>
А вот код Java:
private KeyListener listener;
private EditText textEdit;
switchGaranzia = (Switch) view.findViewById(R.id.switchGaranzia);
textEdit = (EditText) view.findViewById(R.id.testEnabeld);
listener = textEdit.getKeyListener();
if (switchGaranzia.isChecked()){
Log.v("ERROR" , "ENABLED");
textEdit.setKeyListener(null);
} else {
Log.v("ERROR", "DISABLED");
textEdit.setKeyListener(listener);
}
Проблема в том, что журнал показывает мне только «ОТКЛЮЧЕНО», потому что переключатель начинает отключаться.




Вы можете установить OnCheckedChangeListener переключателя.
switchGaranzia.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
//enable
} else {
//disable
}
}
});