请在我的对话框中使用onkey/onclick侦听器更正我的Android Java代码
我正在触发一个密码验证对话框,但我不明白为什么输入错误的密码会导致异常。需要一些绝地大师来帮助这个学徒请在我的对话框中使用onkey/onclick侦听器更正我的Android Java代码,java,android,string,dialog,listener,Java,Android,String,Dialog,Listener,我正在触发一个密码验证对话框,但我不明白为什么输入错误的密码会导致异常。需要一些绝地大师来帮助这个学徒 @Override private void LaunchPwdDialog(){ LayoutInflater li = LayoutInflater.from(context); View promptsView = li.inflate(R.layout.prompts, null); AlertDialog.Builder alertDialogBuilder
@Override
private void LaunchPwdDialog(){
LayoutInflater li = LayoutInflater.from(context);
View promptsView = li.inflate(R.layout.prompts, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
alertDialogBuilder.setView(promptsView);
final EditText userInput = (EditText) promptsView.findViewById(R.id.edtPasswordInput);
alertDialogBuilder
.setCancelable(true)
.setPositiveButton("Finish",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id){
if (userInput.getText().toString().compareTo(strAdminPassword) == 0){
disableKioskMode();
}
else{
Log.i(TAG, "Function LaunchPwdDialog - Admin password incorrect. User entered: " + edt.getText().toString());
Toast.makeText(getBaseContext(), "Incorrect Password", Toast.LENGTH_SHORT).show();
}
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id){
disableKioskMode();
dialog.dismiss();
}
})
.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event){
if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)
if (userInput.getText().toString().compareTo(strAdminPassword) == 0)
{
disableKioskMode();
userInput.setText("");
dialog.dismiss();
}
else {
Log.i(TAG, "Function LaunchPwdDialog - Admin password incorrect. User entered: " + edt.getText().toString());
Toast.makeText(getBaseContext(), "Incorrect Password", Toast.LENGTH_SHORT).show();
if (CurrentAttempt % MaxAttempts == 0) {
Log.i(TAG, "You are unauthorised to access this feature.");
Toast.makeText(getBaseContext(), "You are unauthorised to access this feature.", Toast.LENGTH_SHORT).show();
finish();
}
}
return false;
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
我已经让它在成功验证密码后成功地执行disableKioskMode()函数,但是如果我没有输入任何内容或输入错误的密码,那么它就会崩溃。不确定这是否有帮助,但这里是日志:
06-01 05:55:24.910 12311 12311 D AndroidRuntime com.androiddev.kiosk Shutting down VM
06-01 05:55:24.910 12311 12311 W dalvikvm com.androiddev.kiosk threadid=1: thread exiting with uncaught exception (group=0x41759c08)
06-01 05:55:24.915 12311 12311 E AndroidRuntime com.androiddev.kiosk FATAL EXCEPTION: main
06-01 05:55:24.915 12311 12311 E AndroidRuntime com.androiddev.kiosk Process: com.androiddev.kiosk, PID: 12311
06-01 05:55:24.915 12311 12311 E AndroidRuntime com.androiddev.kiosk java.lang.NullPointerException
06-01 05:55:24.915 12311 12311 E AndroidRuntime com.androiddev.kiosk at com.androiddev.kiosk.KioskLauncher$100000000.onClick(KioskLauncher.java:413)
06-01 05:55:24.915 12311 12311 E AndroidRuntime com.androiddev.kiosk at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:170)
06-01 05:55:24.915 12311 12311 E AndroidRuntime com.androiddev.kiosk at android.os.Handler.dispatchMessage(Handler.java:102)
06-01 05:55:24.915 12311 12311 E AndroidRuntime com.androiddev.kiosk at android.os.Looper.loop(Looper.java:146)
06-01 05:55:24.915 12311 12311 E AndroidRuntime com.androiddev.kiosk at android.app.ActivityThread.main(ActivityThread.java:5653)
06-01 05:55:24.915 12311 12311 E AndroidRuntime com.androiddev.kiosk at java.lang.reflect.Method.invokeNative(Native Method)
06-01 05:55:24.915 12311 12311 E AndroidRuntime com.androiddev.kiosk at java.lang.reflect.Method.invoke(Method.java:515)
06-01 05:55:24.915 12311 12311 E AndroidRuntime com.androiddev.kiosk at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
06-01 05:55:24.915 12311 12311 E AndroidRuntime com.androiddev.kiosk at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
在对其进行任何操作之前,请检查
userInput.getText().toString()
是否为空。当用户输入错误的密码时,您尝试将以下变量记录到LogCat中
edt.getText().toString()
应该是吗
userInput.getText().toString()
如果您想记录用户输入的密码?我在以前的编辑中确实有这样的密码。。当我输入了错误的密码时,崩溃就发生了。天哪,你是对的,我感到非常尴尬和羞愧,以至于我花了好几个小时都没有运气!我得停止用安卓平板电脑编码了!无法相信日志导致了异常!