2015-11-25 4 views
2

Mon application commence par une connexion des utilisateurs.Comment modifier le bouton du clavier "Go" fonctionnalité

lorsque l'utilisateur appuie sur le bouton "Entrée" (après qu'il se soit marqué sur le gridview qui obtient des données de sqlite). L'application ouverte alertdialog par inflater.

if (gridView.isClickable()){ 

     Toast.makeText(getApplicationContext(), "Waiter selected", Toast.LENGTH_LONG).show(); 

     LayoutInflater inflater = getLayoutInflater(); 
     View dialogLayout = inflater.inflate(R.layout.password_dialog, null); 

     AlertDialog.Builder passwordDialog = new AlertDialog.Builder(MainActivity.this); 

Le fichier XML (mise en page) est seulement un editext, sur ce editext l'utilisateur doit remplir

son propre mot de passe:

passwordDialog.setTitle(getString(R.string.get_id_uniq)); 
     passwordDialog.setMessage(getString(R.string.enter_id)); 


passwordDialog.setView(dialogLayout); 

     passwordDialog.setPositiveButton(getString(R.string.next), 
     new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       password = input.getText().toString(); 

et maintenant le problème, lorsque l'utilisateur cliquez sur le editext le clavier ouvert et puis il met son mot de passe, quand il a terminé et appuyez sur le bouton "Go" sur le clavier, le clavier, mais pas assez de cause maintenant il faut pousser à nouveau sur le bouton alertdialog et seulement alors l'application va vérifier si le le mot de passe est correct et le fera passer à l'activité suivante.

i essayé d'utiliser - android:imeOptions="actionNext"

et aussi le "Done", "Go" & "Envoyer", aucun d'entre eux l'aide.

comment puis-je empêcher le double-clic sur 2 boutons différents et envoyer les données à partir du bouton du clavier et passer le besoin de pousser le bouton de dialogue?

Répondre

1

Vous pouvez le faire comme ceci:

  1. changement boîte de dialogue de type à AlertDialog, au lieu de AlertDialog.Builder - qui vous permettra de rejeter (fermer) votre boîte de dialogue.
  2. utilisation setOnEditorActionListener pour vos commentaires, au lieu de setPositiveButton
  3. Appel dialog.dismiss(); Lorsque l'utilisateur clique sur le clavier.

Il devrait ressembler à quelque chose comme ça:

AlertDialog dialog = new AlertDialog.Builder(this).create();//note dialog's type 
    dialog.setTitle("Let's check it"); 
    EditText input = new EditText(this); 
    dialog.setView(input);//assume this is your input 
    input.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      if(actionId == EditorInfo.IME_ACTION_DONE){ 
       //What to do when user clicked Done button 
       Log.i("user's password:", v.getText().toString());//v.getText().toString(); is what's user has entered 
       dialog.dismiss();//close Alert Dialog 
       return true; 
      } 
      return false; 
     } 
    }); 
+1

Great! ça marche! Merci beaucoup! –