2012-07-25 5 views
0

J'utilise une activité avec un Theme.Dialog pour faire mon AlertDialog comme j'essaie d'utiliser cette boîte de dialogue dans un BroadcastReceiver, mais quand j'ai ajouté un OnClickListener l'application se bloque à chaque fois il se lance.AlertDialog personnalisé avec dialogue à thème se bloque lors de l'ajout View.onClickListener

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> 
+0

Parce que vous affectez votre contexte global au même contexte global avec une valeur nulle. Celui que vous devez donner comme 'this.context = this' ou vous devez supprimer tout' context' et utiliser 'PasswordDialog.this' au lieu de' context' – Praveenkumar

+0

Ne semble pas avoir d'effet, l'application se bloque toujours avec les mêmes erreurs. – dythe

+0

Montrez-nous votre classe 'broadcastReceiver'? – Praveenkumar

Répondre

3
java.lang.ClassCastException: android.widget.EditText 

voir ci-dessus la ligne d'erreur, Vous êtes essayer de refrences EditText, pas Bouton ...

+0

qui le réparer, merci! – dythe

0

Cela à cause de vous identifier 'id s comme Button' EditText id s. Donc, essayez de faire comme ci-dessous -

login = (Button) findViewById(R.id.btnLogin); 
inputPassword = (EditText) findViewById(R.id.loginPassword); 

Ceci est l'endroit exact où l'erreur vient.

0

Un AlertDialog ne peut être générée à partir de la classe BroadcastReceiver, s'il vous plaît voir

this

+0

s'il vous plaît lire, je ne fais pas un alertdialog. J'attends une nouvelle activité de BroadcastReceiver avec un Theme.Dialog – dythe

+0

Désolé dythe, mon mauvais. J'avais des problèmes avec l'affichage de AlertDialog de BroadcastReceiver il y a quelques jours, donc je suis rapidement allé dans la réponse. Pardon. –

Questions connexes