OK, alors j'ai deux boutons. Le premier est de "charger du texte" et la seconde est de "parler".
Maintenant, je ne veux pas que le bouton SAIL soit actif pendant qu'il n'y a pas de texte chargé. P>
i J'ai réussi à définir la valeur dans la méthode OnClickListener de la touche EDITTEXT par le bouton de chargement. À l'intérieur de la même méthode que j'ai appelée, p> J'ai initialisé cela comme, p> tout le codage est, < / p> Ceci est pour vérifier l'état et attribuer la langue au TTS pour une utilisation ultérieure. Je reçois le pain grillé comme "le bouton doit fonctionner" mais cela ne sera pas activé. Pourquoi est-ce tellement? Quel est le travail autour? P> J'ai dans le fichier .xml comme, p> dois-je l'avoir activé ici, puis désactiver et activer en runtime? ? p> p>
6 Réponses :
Vous devez utiliser aussi, utilisez setClickable code>
isenabled () code> pour vérifier l'état P>
//for checking
if(btnSpeak.isEnabled())
{
Toast.makeText(SimpleAndroidOCRActivity.this, "Button should work!", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(SimpleAndroidOCRActivity.this, "Button should not work!", Toast.LENGTH_SHORT).show();
}
Désolé, j'ai utilisé isenabled, a commis une erreur lors de la vérification ici. Va essayer avec cliquable cependant.
Utilisez SetFocusuble (true) et SetFocusufItouchmode (true)
Oui! C'est la bonne réponse (les événements cliquables et activés doivent être manipulés). Merci @ ling.s.s
@Override public void onInit(int status) { if (status == TextToSpeech.SUCCESS) { int result = tts.setLanguage(Locale.US); if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { Log.e("TTS", "This Language is not supported"); } else { btnSpeak.setEnabled(true); //for checking if(btnSpeak.isEnabled()) { btnSpeak.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { YourVoicemethod(); Toast.makeText(SimpleAndroidOCRActivity.this, "Button should work!", Toast.LENGTH_SHORT).show(); } }); } else { Toast.makeText(SimpleAndroidOCRActivity.this, "Button should not work!", Toast.LENGTH_SHORT).show(); } } } else { Log.e("TTS", "Initilization Failed!"); } }
Cela ne fonctionne pas non plus. Si je laisse tout cela et que les deux boutons activés, lorsque je clique sur le deuxième bouton, je ne reçois pas le son, pourquoi ce serait-il?
Où est la méthode du bouton onclick?
Vérifiez que votre bouton est enfoncé ou non et écrivez votre code.
code d'exemple. p> J'espère que cela vous aidera. P> P >
Vous pouvez réaliser par désactiver et permettre à la visibilité du bouton
Voici un exemple P>
View button = findViewById(R.id.buttonid); button.setVisibility(View.GONE);
Merci, cela fonctionne. Bien que je me demande encore pourquoi ne pouvait toujours pas travailler à l'exécution, si je ne reçois aucune solution possible à cela, je choisirais la vôtre comme réponse. Merci une fois de plus.
Utilisez un auditeur pour les deux boutons
button1.setOnClickListener(listener); button2.setOnClickListener(listener); listener = new OnClickListener({ @Override public void onClick(View v) { switch(button_id){ case id1: button2.setEnabled(false); button1.setEnabled(true); break; case id2: button1.setEnabled(false); button2.setEnabled(true); break; } } });
Peut être trop tard pour répondre et vous avez déjà trouvé une solution, mais vous pouvez utiliser Invalidate pour forcer le bouton pour redessiner en fonction de son nouvel état:
btnSpeak.setEnabled(true); btnSpeak.invalidate();
Vérifiez si vous initialisiez le bouton avec ID correct
Oui, j'ai avec le bon identifiant.