Android повторяет диалог после нажатия на него

У меня есть приложение, позвольте мне показать при запуске диалоговое окно, в котором введите имя пользователя и пароль для входа в систему. Если ваше имя пользователя и пароль верны, моя активность изменения программы, если она неверна, должна повторить диалог для повторного ввода имени пользователя и пароля. Моя проблема в том, как повторить диалог, когда ввод неверен

Вот код:

public Dialog onCreateDialog(Bundle savedInstanceState) {

    inflater = getActivity().getLayoutInflater();
    v = inflater.inflate(R.layout.my_dialog_layout,null);

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setView(v).setPositiveButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            username = (EditText) v.findViewById(R.id.username);
            password = (EditText) v.findViewById(R.id.password);
            String user = "";
            String pswd = "";

            try {
                File file=new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Download/"+"user.txt"); 

                InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(file));
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

                StringBuilder stringBuilder = new StringBuilder();
                user = bufferedReader.readLine().toString();
                pswd = bufferedReader.readLine();

            }catch (FileNotFoundException e) {
                Log.e("login activity", "File not found: " + e.toString());
            }catch (IOException e) {
                Log.e("login activity", "Can not read file: " + e.toString());
            }

            if (username.getText().toString().equals(user) && password.getText().toString().equals(pswd)) {

                Intent i = new Intent("user_activity");
                startActivity(i);
                Toast.makeText(getActivity(), "Welcome: " + username.getText().toString(), Toast.LENGTH_LONG).show();

            } else {
                //here it should me repeat this dialog
                Toast.makeText(getActivity(), "Username invalid", Toast.LENGTH_LONG).show();
            }
        }

        }).setNegativeButton("EXIT", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            ((MainActivity)getActivity()).finish();
        }
    });

    return builder.create();
}

Спасибо всем


person xXJohnRamboXx    schedule 07.01.2015    source источник
comment
см. этот вопрос: stackoverflow.com/questions/4016313/   -  person samgak    schedule 08.01.2015


Ответы (1)


Попробуйте этот простой подход: продолжайте показывать диалоговое окно и очистите поле имени пользователя и пароля:

if (username.getText().toString().equals(user) && password.getText().toString().equals(pswd)) {

            Intent i = new Intent("user_activity");
            startActivity(i);
            Toast.makeText(getActivity(), "Welcome: " + username.getText().toString(),    Toast.LENGTH_LONG).show();
            dialog.dismiss();
        } else {
            //here it should me repeat this dialog

            username.setText("", TextView.BufferType.EDITABLE);;
            password.setText("", TextView.BufferType.EDITABLE);
            Toast.makeText(getActivity(), "Username invalid", Toast.LENGTH_LONG).show();
        }
person T D Nguyen    schedule 08.01.2015
comment
я пробовал, и когда имя пользователя неверно, оно закрывается - person xXJohnRamboXx; 08.01.2015