2011-07-03 9 views
0

Je souhaite afficher une boîte de dialogue personnalisée simple. Pour commencer, je voulais simplement ajouter une vue de texte et voir si la boîte de dialogue s'affiche.La boîte de dialogue personnalisée Android ne s'affiche pas

Ceci est mon xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<TextView android:id="@+id/tvPreview" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="@string/Instructions"></TextView> 
</LinearLayout> 

Ceci est mon code pour la fonction onCreateDialog:

@Override 
protected Dialog onCreateDialog(int id) { 
    final Dialog dialog = new Dialog(this); 
    dialog.setContentView(R.layout.predialog); 
    dialog.setTitle("Tests of my Dialog"); 
    return dialog; 
} 

Lorsque l'utilisateur (me) appuie sur un élément de menu I utiliser ce code:

public void DiagTests(){ 
    showDialog(0); 
} 

Qu'est-ce qui se passe, c'est que l'écran obscurcit mais la boîte de dialogue ne s'affiche pas.

Est-ce que quelqu'un a une idée de ce que je fais mal?

PD: Juste au cas où il n'y aurait pas d'erreurs ou d'avertissements d'aucune sorte.

Merci pour toute aide

Répondre

1

Vous pouvez essayer cette approche. Créer une classe de dialogue personnalisée (ceci est un exemple d'une classe, vous pouvez utiliser ce que vous voulez):

/** Class Must extends with Dialog */ 
/** Implement onClickListener to dismiss dialog when OK Button is pressed */ 
public class DialogWithSelect extends Dialog implements OnClickListener { 

private String _text; 
Button okButton; 
Button cancelButton; 
/** 
* ProgressDialog that will be shown during the loading process 
*/ 
private    ProgressDialog   myDialog; 

public DialogWithSelect getDialog() { 
    return this; 
} 

public String getText() { 
    return this._text; 
} 

public DialogWithSelect(Context context) { 
    super(context); 
    myDialog = new ProgressDialog(this.getContext()); 
    myDialog.setMessage("Exporting file..."); 
    /** 'Window.FEATURE_NO_TITLE' - Used to hide the title */ 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    /** Design the dialog in main.xml file */ 
    setContentView(R.layout.dialog_with_select_box); 

    final Spinner hubSpinner = (Spinner) findViewById(R.id.spinnerSelectFormat); 
    ArrayAdapter adapter = ArrayAdapter.createFromResource(this.getContext(), R.array.spinner , android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    hubSpinner.setAdapter(adapter); 


    okButton = (Button) findViewById(R.id.okButton); 
    cancelButton = (Button) findViewById(R.id.cancelButton); 

     okButton.setOnClickListener(new View.OnClickListener(){ 

      public void onClick(View v) { 
      //whatever 
      } 

     }); 



    cancelButton.setOnClickListener(new View.OnClickListener(){ 

     public void onClick(View v) { 
      //Get the text from the texString to paint on the Canvas 
      getDialog().hide(); 
     } 

    } 
); 


} 

Définir la boîte de dialogue de la classe où il va être utilisé:

final DialogWithSelect dialog = new DialogWithSelect(getContext()); 
dialog.setTitle(R.string.dialogSelectBoxText); 

Et lancez-le dans l'événement click:

dialog.show(); 
+0

Je l'ai vraiment fait fonctionner! Cependant c'était étrange. J'ai créé un projet entièrement nouveau juste pour tester cette chose de dialogue personnalisé et cela a fonctionné sur mon premier essai, parce que je n'ai pas porté le xml (je l'ai créé à partir de zéro). Donc ce que j'ai fait est de générer le xml à partir de zéro et cela a fonctionné. Merci pour l'aide. Bien qu'il serait très intéressant de savoir ce qui n'allait pas avec ça ... – aarelovich

Questions connexes