Custom AlertDialog avec dialogue thématique Crashing lors de l'ajout de la vue.OnclickListener
-
11-12-2019 - |
Question
J'utilise une activité avec un thème.Dioriog pour faire mon alertdialog car j'essaie d'utiliser cette boîte de dialogue dans un BroadCastreCeiver, mais lorsque j'ai ajouté une application OnClickListener, l'application se bloque à chaque lancement.
code:
package nyp.android.project;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class PasswordDialog extends Activity {
private static final String TAG = "Logging Activity";
//Context context;
Button login;
EditText inputPassword;
private static final int MY_PASSWORD_DIALOG_ID = 0;
protected void onCreate(Bundle savedInstanceState)
{
//this.context = context;
super.onCreate(savedInstanceState);
setContentView (R.layout.password_dialog);
//SharedPreferences passwdfile = context.getSharedPreferences(
// PhoneFinder.PASSWORD_PREF_KEY, 0);
//String correctSHA1 = passwdfile.getString(PhoneFinder.PASSWORD_PREF_KEY, null);
login = (Button) findViewById(R.id.loginPassword);
inputPassword = (EditText) findViewById(R.id.btnLogin);
login.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(PasswordDialog.this, "Hello World!", Toast.LENGTH_LONG).show();
}
});
}
}
logcat:
07-25 12:27:30.354: D/AndroidRuntime(570): Shutting down VM
07-25 12:27:30.354: W/dalvikvm(570): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
07-25 12:27:30.364: E/AndroidRuntime(570): FATAL EXCEPTION: main
07-25 12:27:30.364: E/AndroidRuntime(570): java.lang.RuntimeException: Unable to start activity ComponentInfo{nyp.android.project/nyp.android.project.PasswordDialog}: java.lang.ClassCastException: android.widget.EditText
07-25 12:27:30.364: E/AndroidRuntime(570): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
07-25 12:27:30.364: E/AndroidRuntime(570): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
07-25 12:27:30.364: E/AndroidRuntime(570): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
07-25 12:27:30.364: E/AndroidRuntime(570): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
07-25 12:27:30.364: E/AndroidRuntime(570): at android.os.Handler.dispatchMessage(Handler.java:99)
07-25 12:27:30.364: E/AndroidRuntime(570): at android.os.Looper.loop(Looper.java:123)
07-25 12:27:30.364: E/AndroidRuntime(570): at android.app.ActivityThread.main(ActivityThread.java:4627)
07-25 12:27:30.364: E/AndroidRuntime(570): at java.lang.reflect.Method.invokeNative(Native Method)
07-25 12:27:30.364: E/AndroidRuntime(570): at java.lang.reflect.Method.invoke(Method.java:521)
07-25 12:27:30.364: E/AndroidRuntime(570): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-25 12:27:30.364: E/AndroidRuntime(570): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-25 12:27:30.364: E/AndroidRuntime(570): at dalvik.system.NativeStart.main(Native Method)
07-25 12:27:30.364: E/AndroidRuntime(570): Caused by: java.lang.ClassCastException: android.widget.EditText
07-25 12:27:30.364: E/AndroidRuntime(570): at nyp.android.project.PasswordDialog.onCreate(PasswordDialog.java:38)
07-25 12:27:30.364: E/AndroidRuntime(570): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-25 12:27:30.364: E/AndroidRuntime(570): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
07-25 12:27:30.364: E/AndroidRuntime(570): ... 11 more
xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dip" >
<!-- Password Label -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dip"
android:text="Password" />
<!-- Password TextField -->
<EditText
android:id="@+id/loginPassword"
android:layout_width="260dp"
android:layout_height="wrap_content"
android:password="true" />
<!-- Login Button -->
<Button
android:id="@+id/btnLogin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:text="Login" />
</LinearLayout>
La solution
java.lang.ClassCastException: android.widget.EditText
voir la ligne d'erreur ci-dessus,
Autres conseils
Un alertdialog ne peut pas être généré à partir de la classe BroadcastraSiver, veuillez vous reporter à
Ceci à cause de votre identifiant ID de EditText
comme ID de Button
.Alors essayez de faire comme ci-dessous -
login = (Button) findViewById(R.id.btnLogin);
inputPassword = (EditText) findViewById(R.id.loginPassword);
C'est l'endroit exact où l'erreur vient.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow