Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
请在我的对话框中使用onkey/onclick侦听器更正我的Android Java代码_Java_Android_String_Dialog_Listener - Fatal编程技术网

请在我的对话框中使用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()

如果您想记录用户输入的密码?

我在以前的编辑中确实有这样的密码。。当我输入了错误的密码时,崩溃就发生了。天哪,你是对的,我感到非常尴尬和羞愧,以至于我花了好几个小时都没有运气!我得停止用安卓平板电脑编码了!无法相信日志导致了异常!