Как реализовать AlertDialog.пароль не вводится в редактируемый текст? - PullRequest
0 голосов
/ 01 декабря 2011

Я реализовал действие с помощью edittext и кнопки:

После того, как пользователь ввел пароль и нажал кнопку, я хочу подтвердить пароль и, если он верный, открыть другое действие. Если пароль неправильный, я хотел бы отобразить сообщение об ошибке, используя AlertDialog.

Возможно ли это? Как?

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.enter);


    //---load the SharedPreferences object---
    prefs = getSharedPreferences(prefName, MODE_PRIVATE);
    String a = prefs.getString(PASSWORD, "pa");
    System.out.println("saved Password" +a);    

    EditText et = (EditText)findViewById(R.id.txtName); 
    String theText = et.getText().toString();
    System.out.println("entered Password"+theText); 

    //---get the SharedPreferences object---
    prefs = getSharedPreferences(prefName, MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString(PASSWORD, theText );

    //---save the values---
    editor.commit(); 


    Button data = (Button)findViewById(R.id.Ok);            
    data.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            Intent i = new Intent(Enter.this,Data.class);                
            startActivity(i);                   
        }   
    });

Ответы [ 3 ]

1 голос
/ 01 декабря 2011

Вы должны переместить код в onClickListener на вашей кнопке:

Button data = (Button)findViewById(R.id.Ok);            
data.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {
        EditText et = (EditText)findViewById(R.id.txtName); 
        String theText = et.getText().toString();
        prefs = getSharedPreferences(prefName, MODE_PRIVATE);
        if (theText.equals(prefs.getString("PASSWORD")))
        {
            Intent i = new Intent(Enter.this,Data.class);                
            startActivity(i);       
        }
        else
        {
            showDialog(myDialogID);
        }            
    }   
});

Тогда, конечно, вам нужно реализовать AlertDialog. myDialogID должно быть уникальным целым числом. (Уместно, только если вы используете больше диалогов). См. руководство разработчика Android для диалогов .

1 голос
/ 01 декабря 2011

Вы можете перехватить строку пароля в событии нажатия кнопки. Здесь вы можете открыть диалоговое окно в зависимости от исправления пароля.

0 голосов
/ 20 января 2012
  protected Dialog onCreateDialog(int id) {
  switch (id) {
  case 0:
  return new AlertDialog.Builder(this)
         .setIcon(R.drawable.icon)
         .setTitle(“This is a dialog with some simple text...”)
         .setPositiveButton(“OK”, new
          DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog,
                                        int whichButton)
       {
        Toast.makeText(getBaseContext(),
           “OK clicked!”, Toast.LENGTH_SHORT).show();
    }
 })
         .setNegativeButton(“Cancel”, new
          DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog,
                                        int whichButton)
      {
       Toast.makeText(getBaseContext(),
            “Cancel clicked!”, Toast.LENGTH_SHORT).show();
    }
 })
...