2017-07-19 8 views
-1

J'ai ouvert une boîte de dialogue personnalisée à l'intérieur d'un bouton long, Dans cette boîte de dialogue personnalisée, j'ai deux boutons et un texte d'édition. Je veux changer le nom du bouton que j'ai pressé avec le nom que je reçois du texte d'édition dans la boîte de dialogue personnalisée, les boutons ne fonctionnent pas.Le bouton ne fonctionne pas dans la boîte de dialogue personnalisée apparaissant après un appui long sur un bouton

public void initializeLPButtons(Button[] btns, int[] rArrays) { 

    for(i=0; i<btns.length; i++) { 

     btns[i] = (Button) findViewById(rArrays[i]); 
     btns[i].setOnLongClickListener(new View.OnLongClickListener() { 

      @Override 
      public boolean onLongClick(View v) { 

       renameBtn(); 
       return true; 
      } 
     }); 
    } 
} 

public void renameBtn() { 

    final AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this); 
    dialog.setView(R.layout.dialog_renamebtn); 
    dialog.setTitle("Rename Button..."); 
    dialog.setMessage("Rename The Button To:"); 

    LayoutInflater inflater = LayoutInflater.from(MainActivity.this); 
    final View dialogView = inflater.inflate(R.layout.dialog_renamebtn, null); 

    renameEt = (EditText) dialogView.findViewById(R.id.renameEt); 
    renameBtn = (Button) dialogView.findViewById(R.id.renameBtn); 
    cnclRenameBtn = (Button) dialogView.findViewById(R.id.cnlRenameBtn); 

    cnclRenameBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     } 
    }); 

    renameBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      renameBtnTxt(); 
     } 
    }); 

    dialog.show(); 
} 

public void renameBtnTxt() { 

    if (renameEt.getText().toString().length() > 0) { 
     btns[i].setText(renameEt.getText().toString()); 
    }else { 
     Toast.makeText(MainActivity.this, "Please choose a name.", 
       Toast.LENGTH_SHORT).show(); 
    } 
} 

Je ne pense pas que mon code a des problèmes. S'il vous plaît, si c'est quelque chose avec Java, aidez-moi à le trouver.

Répondre

1

Créer votre boîte de dialogue comme ceci:

private void CreateGetPhoneNumDialog() { 
     Dialog PhoneNumberDialog = new Dialog(getActivity()); 
     PhoneNumberDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     PhoneNumberDialog.setContentView(R.layout.mobile_number_pop_message); 
     PhoneNumberDialog.setCancelable(false); 
} 

Get edittext et la référence de bouton après avoir créé la boîte de dialogue

etDialogPhoneNum = (EditText) PhoneNumberDialog.findViewById(R.id.et_DialogCustomerPhone); 
btnGetPhoneNum = (Button) PhoneNumberDialog.findViewById(R.id.btn_DialogGetPhoneNum); 

ensuite mis sur un clic d'écoute sur le bouton de dialogue

btnGetPhoneNum.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Do your work here 
     } 
}); 

de mobile_number_pop_message. xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="300dp" 
    android:background="@color/White" 
    android:layout_height="wrap_content" 
    > 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="53dp" 
     android:id="@+id/et_DialogCustomerPhone" 
     android:inputType="phone" 
     android:background="@null" 
     android:paddingLeft="5dp" 
     android:paddingRight="5dp" 
     android:maxLength="9" 
     android:hint="512345678" 
     android:gravity="start|center_vertical" 
     android:layout_gravity="start|center_vertical" 
    /> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:gravity="center" 
     android:text="@string/str_UpdatePhoneNumber" 
     android:textAllCaps="true" 
     android:layout_gravity="center" 
     android:id="@+id/btn_DialogGetPhoneNum" 
    /> 

</LinearLayout> 

Edit:

Et montrer la boîte de dialogue comme ceci:

PhoneNumberDialog.show(); 
+0

cela fonctionne, mais il faut dialog.show aussi. Je ne sais pas pourquoi quelqu'un a marqué moins ma question. – Shahryar

+0

oui, j'ai oublié d'ajouter cela, merci de signaler. J'ai édité ma réponse. – AndroidGeek