J'essaie d'apprendre des boîtes de dialogue personnalisées. J'en ai fait un avec un bouton et ça se passe bien et je peux frapper des points d'arrêt dans le constructeur et la méthode onCreate, mais quand je clique sur le bouton, il se bloque sans jamais arriver au gestionnaire de boutons.Boîte de dialogue d'apprentissage pour débutants Android = CRASH
Le XML de configuration dialogue (my_dialog_layout.xml) est:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/AButton"
android:layout_width="100px"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginLeft="10px"
android:onClick="AButtonHandler"
android:text="Click Me"
/>
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_toLeftOf="@id/AButton"
android:text="Click this button: "
/>
/>
... et le fichier java de la boîte de dialogue est:
import android.os.Bundle;
import android.widget.Toast;
import android.view.View;
import android.content.Context;
import android.app.Dialog;
public class MyDialog extends Dialog {
public MyDialog(Context context) {
super(context);
setContentView(R.layout.my_dialog_layout);
}
public void AButtonHandler(View target) {
int i = 0; // just a placeholder to set a breakpoint at
i++; // " "
// Toast.makeText(this, "in AButtonHandler", Toast.LENGTH_LONG).show();
MyDialog.this.dismiss();
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Toast.makeText(this, "Dialog onCreate", Toast.LENGTH_LONG).show();
}
}
Lorsque je clique sur AButton il se bloque dans le débogueur avant de à mon point d'arrêt dans AButtonHandler avec " Fil [< 1> principal] (Suspendu (exception IllegalStateException))
Voir $ 1.enCliquez sur (ligne) ligne: 2059 Bouton (Affichage) .performClick() ligne: 2408 ... "
Notez également le Toast commenté. Je voulais mettre Toasts dans mais le compilateur me donne: La méthode makeText (Context, CharSequence, int) dans le type Toast n'est pas applicable pour les arguments (MyDialog, String, int) Qu'est-ce que je fais mal?
Merci d'avance!
Pourquoi 'MyDialog.this.dismiss()'? Vous êtes dans MyDialog, pas une classe interne. Est-ce un reste de quand vous avez utilisé un OnClickListener? – EboMike
En fait oui. Je l'ai changé pour this.dismiss(). Pas que ça arrive jamais 8-) –