Je dois cliquer deux fois sur le bouton pour que cela fonctionne
Donc, j'ai un bouton dans mon application et d'un edittext. Quand je clique sur le bouton et d'écrire quelque chose dans l'edittext, un textview changements. Tout fonctionne comme il se doit, sauf pour une chose. Je dois cliquer sur le bouton deux fois pour le faire fonctionner (seulement la première fois que j'ai ouvert activité). La première fois après que j'ai ouvert activité j'appuie sur le bouton et rien ne se passe, après qu'il fonctionne comme il se doit.
J'ai déjà fait mes recherches sur ce sujet et comme je sais que la chose qui est à l'origine de la difficulté à se concentrer, mais j'ai essayé un peu de choses et rien n'a fonctionné.
Bouton de code XML:
<Button
android:id="@+id/submitButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText1"
android:layout_alignBottom="@+id/editText1"
android:layout_alignLeft="@+id/checkBox25"
android:text="@string/addMaterial"
android:onClick="submitQuantityButton" >
</Button>
Edittext code XML:
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/spinner1"
android:ems="3"
android:inputType="number"
android:maxLength="3" >
</EditText>
J'ai essayé d'ajouter android:focusableInTouchMode="false" à bouton XML, j'ai aussi essayé d'ajouter requestFocus à bouton XML et cela ne fonctionne toujours pas. J'ai également supprimé les requestFocus de edittext et ça ne fonctionne pas. Je suis à cours d'idées, de quoi d'autre pour essayer.
onClick méthode:
public void submitQuantityButton (View v){
Button submitButton = (Button)findViewById(R.id.submitButton);
final Spinner sItems = (Spinner)findViewById(R.id.spinner1);
final Context context = this;
final CheckBox cb4 = (CheckBox) findViewById(R.id.checkBox4);
final CheckBox cb5 = (CheckBox) findViewById(R.id.checkBox5);
final CheckBox cb33 = (CheckBox) findViewById(R.id.checkBox33);
final CheckBox cb30 = (CheckBox) findViewById(R.id.checkBox30);
final CheckBox cb6 = (CheckBox) findViewById(R.id.checkBox6);
final CheckBox cb7 = (CheckBox) findViewById(R.id.checkBox7);
final CheckBox cb9 = (CheckBox) findViewById(R.id.checkBox9);
final CheckBox cb10 = (CheckBox) findViewById(R.id.checkBox10);
final CheckBox cb11 = (CheckBox) findViewById(R.id.checkBox11);
final CheckBox cb12 = (CheckBox) findViewById(R.id.checkBox12);
//
final AlertDialog.Builder emptyETextErrorBuilder = new AlertDialog.Builder(context);
emptyETextErrorBuilder.setTitle("Warning");
emptyETextErrorBuilder.setMessage("Please enter a value before pressing this button");
emptyETextErrorBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
submitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final int position = sItems.getSelectedItemPosition();
EditText quantityEditText = (EditText)findViewById(R.id.editText1);
switch (position){
case 0:
AlertDialog.Builder spinnerErrorBuilder = new AlertDialog.Builder(context);
spinnerErrorBuilder.setTitle("Warning");
spinnerErrorBuilder.setMessage("Please choose an item from the list above and then enter a certain value");
spinnerErrorBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog spinnerError = spinnerErrorBuilder.create();
spinnerError.show();
break;
case 1:
String item1 = quantityEditText.getText().toString();
if (item1.matches(""))
{
AlertDialog emptyETextError = emptyETextErrorBuilder.create();
emptyETextError.show();
}
else
{
cb4.setText("Elaborate Totem (" + item1 + "/250)");
}
break;
case 2:
String item2 = quantityEditText.getText().toString();
if (item2.matches(""))
{
AlertDialog emptyETextError = emptyETextErrorBuilder.create();
emptyETextError.show();
}
else
{
cb5.setText("Pile of Crystalline Dust (" + item2 + "/250)");
}
break;
case 3:
String item3 = quantityEditText.getText().toString();
if (item3.matches(""))
{
AlertDialog emptyETextError = emptyETextErrorBuilder.create();
emptyETextError.show();
}
else
{
cb33.setText("Pile of Crystalline Dust (" + item3 + "/250)");
}
break;
case 4:
String item4 = quantityEditText.getText().toString();
if (item4.matches(""))
{
AlertDialog emptyETextError = emptyETextErrorBuilder.create();
emptyETextError.show();
}
else
{
cb30.setText("Pile of Crystalline Dust (" + item4 + "/250)");
}
break;
case 5:
String item5 = quantityEditText.getText().toString();
if (item5.matches(""))
{
AlertDialog emptyETextError = emptyETextErrorBuilder.create();
emptyETextError.show();
}
else
{
cb6.setText("Powerful Venom Sac (" + item5 + "/250)");
}
break;
case 6:
String item6 = quantityEditText.getText().toString();
if (item6.matches(""))
{
AlertDialog emptyETextError = emptyETextErrorBuilder.create();
emptyETextError.show();
}
else
{
cb7.setText("Vial of Powerful Blood (" + item6 + "/250)");
}
break;
case 7:
String item7 = quantityEditText.getText().toString();
if (item7.matches(""))
{
AlertDialog emptyETextError = emptyETextErrorBuilder.create();
emptyETextError.show();
}
else
{
cb9.setText("Ancient Bone (" + item7 + "/250)");
}
break;
case 8:
String item8 = quantityEditText.getText().toString();
if (item8.matches(""))
{
AlertDialog emptyETextError = emptyETextErrorBuilder.create();
emptyETextError.show();
}
else
{
cb10.setText("Armored Scale (" + item8 + "/250)");
}
break;
case 9:
String item9 = quantityEditText.getText().toString();
if (item9.matches(""))
{
AlertDialog emptyETextError = emptyETextErrorBuilder.create();
emptyETextError.show();
}
else
{
cb11.setText("Vicious Claw (" + item9 + "/250)");
}
break;
case 10:
String item10 = quantityEditText.getText().toString();
if (item10.matches(""))
{
AlertDialog emptyETextError = emptyETextErrorBuilder.create();
emptyETextError.show();
}
else
{
cb12.setText("Vicious Fang (" + item10 + "/250)");
}
break;
}
}
});
}
source d'informationauteur Guy
Vous devez vous connecter pour publier un commentaire.
Mon problème était le
Button
XML définissant:Supprimer cet attribut et le bouton ne nécessite pas d'être touché deux fois. Il semble que le premier contact est consommée pour affecter l'accent sur le bouton et le second déclenche alors la
OnClickListener
.Noter que le Bouton fonctionne sans problème avec le
android:focusable="true"
attribut.Bon alors j'ai enfin compris ce qui a causé le problème, par moi-même. Je ne peux pas croire que j'ai manqué un tel problème évident. La chose qui a causé le problème n'était pas de la concentration, mais la méthode elle-même. Dans mon fichier XML, j'ai appelé onClick méthode par android:onClick="onClick" et puis j'ai aussi ajouté un buttonlistener à l'intérieur de la méthode onClick de code java.
Tout ce que je fait, c'était de retirer le buttonlistener et il n'y a plus de double cliquant nécessaire! Donc si quelqu'un a ce problème à l'avenir assurez-vous simplement que vous n'avez pas de onClick méthode ET buttonlistener en même temps.
Mauvais code:
Pour le faire fonctionner, j'ai simplement supprimé le onclick de l'auditeur, ne laissant que:
Si vous êtes de gonflage de vue à un autre, essayer de mettre sur la vue parente:
a fonctionné pour moi.
Simplement utiliser getText() pour obtenir le texte de EditText
Et puis texte d'un TextView à l'aide de setText().
essayer cette fois
Mis à JOUR
override
onResume
méthode dans votreactivity
et puis clairement l'accent de votre edittext et définissez le focus sur votre page principale
ou
si le problème est avec le clavier virtuel, il pourrait vous aider à
dans votre
AndroidManifest.xml
fichier à l'intérieur de votreActivity
balise de mettre cette ligneJ'ai eu le même problème que l'OP. J'ai essayé tous les focus liées à des suggestions, mais aucun d'entre eux travaillaient à chaque fois pour moi.
J'ai essayé de supprimer les
NavigationDrawer
de ma mise en page, mais cela ne fonctionne pas.Enfin, j'ai essayé de remplacer mon
CoordinatorLayout
avec unLinearLayout
et maintenant mes boutons cliquez sur première fois à chaque fois. Peut être vaut la peine d'essayer.J'ai parfois eu ce problème lors d'un clic sur btn ou txt ou edt sur le fragment, et vraiment permet d'utiliser à la place .setOnClickListener() besoin .setOnTouchListener comme dans cet exemple: