AlertDialog personalizzato con finestra di dialogo tematica che si schianta quando ha aggiunto View.onClickListener

StackOverflow https://stackoverflow.com//questions/11649351

Domanda

Sto usando un'attività con un tema.Dialog per fare il mio allertanolog mentre sto cercando di usare questa finestra di dialogo all'interno di un BroadcaStreceiver ma quando ho aggiunto un onclickListener L'applicazione si blocca ogni volta che si lancia.

Codice:

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>
.

È stato utile?

Soluzione

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

Vedi sopra la riga di errore, Prova a ritenersi editext, non pulsante ...

Altri suggerimenti

A AlertDialog non può essere generato dalla classe BroadcaStreceiver, vedere

Questo a causa di stai identificando l'ID di EditText come ID generacodictagCode.Quindi prova a fare come sotto -

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

Questo è il posto esatto in cui viene l'errore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top