¿Cómo puedo obtener los resultados de un AlertDialog?

Estoy usando un AlertDialog.Builder para mostrar un cuadro de diálogo para pedirle al usuario que ingrese una contraseña, luego quiero guardar esa contraseña en una preferencia, sin embargo, no puedo entender cómo obtener el resultado del método de entrada del cuadro de diálogo de alerta .

Aquí es esencialmente lo que me gustaría poder hacer:

    String result;
    AlertDialog.Builder b = new AlertDialog.Builder(this);
    b.setTitle("Please enter a password");
    final EditText input = new EditText(this);
    b.setView(input);
    b.setPositiveButton("OK", new DialogInterface.OnClickListener()
    {
        @Override
        public void onClick(DialogInterface dialog, int whichButton)
        {
           //I get a compile error here, it wants result to be final.
           result = input.getText().toString();
        }
    });
    b.setNegativeButton("CANCEL", null);
    b.create().show();

Sin embargo, estoy abierto a hacer algo comoshowDialog(int); luego usando laonCreateDialog(int) y de alguna manera configurar el resultado y recibirlo en otro método, pero no tengo idea de cómo proceder con la última parte.