Question

I am using an Activity with a Theme.Dialog to do my AlertDialog as i'm trying to use this dialog inside a BroadcastReceiver but when i added a OnClickListener the application crashes everytime it launches.

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>
Was it helpful?

Solution

java.lang.ClassCastException: android.widget.EditText

see above line of error,You are try to refrences EditText ,not Button...

OTHER TIPS

An AlertDialog can not be generated from BroadcastReceiver class, please see

this

This because of you're identifying EditText's id as Button's id. So try to do like below -

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

This is the exact place where the error comes.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top