Custom AlertDialog with Themed Dialog crashing when added View.onClickListener
-
11-12-2019 - |
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>
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 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