Probleme avec binding
RésoluCR16_Padawan Messages postés 61 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je rencontre un petit soucis lorsque je lance mon appli. Cette dernière se ferme lorsque je click sur le radio Button.
Pour info je récupère le nom du radio Button sélectionné dans un textview (binding.iCTxtview8).
RadioGroup radioGroup; RadioButton radioButton; private ActivityPageTwoBinding binding; private PreferenceManager preferenceManager; private String encodedImage; TextView txtWiew1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); radioGroup = findViewById(R.id.i_c_RadioGroup); txtWiew1 = findViewById(R.id.i_c_Txtview1); binding = ActivityPageTwoBinding.inflate(getLayoutInflater()); View view = binding.getRoot(); setContentView(view); //setContentView(binding.getRoot());*/ preferenceManager = new PreferenceManager(getApplicationContext()); setListener(); } ////////////////// RADIOBUTTONS////////////////////////////// public void checkButton (View v){ int radioId = radioGroup.getCheckedRadioButtonId(); radioButton = findViewById(radioId); txtWiew1.setText(radioButton.getText()); //Toast.makeText(this, "bouton selectionné: " + radioButton.getText(), Toast.LENGTH_SHORT).show(); } private void setListener() { binding.iCBtnSuivant.setOnClickListener(v -> { if (isValidFields()) { // saving(); } }); } private boolean isValidFields() { if (binding.iCEditext1.getText().toString().trim().isEmpty()) { Toast.makeText(getApplicationContext(), "xxx", Toast.LENGTH_SHORT).show(); return false; } else if (binding.iCEditext2.getText().toString().trim().isEmpty()) { Toast.makeText(getApplicationContext(), "xxx", Toast.LENGTH_SHORT).show(); return false; } else if (binding.iCEditext3.getText().toString().trim().isEmpty()) { Toast.makeText(getApplicationContext(), "xxx", Toast.LENGTH_SHORT).show(); return false; } else if (binding.iCEditext4.getText().toString().trim().isEmpty()) { Toast.makeText(getApplicationContext(), "xxx", Toast.LENGTH_SHORT).show(); return false; } else if (binding.iCEditext5.getText().toString().trim().isEmpty()) { Toast.makeText(getApplicationContext(), "xxx", Toast.LENGTH_SHORT).show(); return false; } else if (binding.iCEditext6.getText().toString().trim().isEmpty()) { Toast.makeText(getApplicationContext(), "xxx", Toast.LENGTH_SHORT).show(); return false; } else if (binding.iCEditext7.getText().toString().trim().isEmpty()) { Toast.makeText(getApplicationContext(), "xxx", Toast.LENGTH_SHORT).show(); return false; } else if (binding.iCTxtview8.getText().toString().trim().isEmpty()) { Toast.makeText(getApplicationContext(), "xxx", Toast.LENGTH_SHORT).show(); return false; } else if (encodedImage == null) { Toast.makeText(getApplicationContext(), "xxx", Toast.LENGTH_SHORT).show(); return false; } else { return true; } }
Merci par avance pour vos suggestions.
Windows / Edge 117.0.2045.43
- Probleme avec binding
- Vous avez quitté le logiciel car une erreur est survenue "The binding of Is - Forum Nintendo Switch
2 réponses
bonsoir,
j'ai reçu la solution de la part de l'IA.
voici la réponse:
Il est possible que l'erreur vienne du fait que tu tentes d'accéder à ton radioGroup ou radioButton avant qu'il soit initialisé. Essaie de déplacer ta ligne `radioGroup = findViewById(R.id.i_c_RadioGroup);` après `setContentView(view);`. De plus, assure-toi que l'ID fourni pour `findViewById` est bien présent dans ton fichier XML de layout. Cela pourrait être à l'origine du problème.
Réponse générée par IA le 30/09/2023
bonne soirée
Hello,
Alors oui, la réponse de l'IA est techniquement correcte.
Après, tu n'utilises pas le binding correctement. Tu n'as plus besoin de findViewById() pour récupérer des vues car tu peux récupérer directement tes composants graphiques à partir de leur ID, après avoir initialiser le binding, de la manière suivante:
private ActivityPageTwoBinding binding; private PreferenceManager preferenceManager; private String encodedImage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityPageTwoBinding.inflate(getLayoutInflater()); View view = binding.getRoot(); setContentView(view); //setContentView(binding.getRoot());*/ preferenceManager = new PreferenceManager(getApplicationContext()); setListener(); } ////////////////// RADIOBUTTONS////////////////////////////// public void checkButton (View v){ int radioId = binding.radioGroup.getCheckedRadioButtonId(); radioButton = findViewById(radioId); binding.txtWiew1.setText(radioButton.getText()); //Toast.makeText(this, "bouton selectionné: " + radioButton.getText(), Toast.LENGTH_SHORT).show(); }