2014-01-27 3 views
0

У меня есть пользовательский AlertDialog с EditText для PIN-кода. OnClick положительной кнопки PIN-код в файле редактирования проверяется с помощью SharedPreferences. Если он соответствует, я хочу закрыть диалоговое окно, иначе он должен оставаться открытым. В тот момент, когда PIN-код правильный, диалог закрывается и появляется снова, и я не хочу, чтобы он появлялся. Спасибо за вашу помощь заранее.Не удается отменить оповещение. Он продолжает всплывать

@Override 
public boolean dispatchTouchEvent(MotionEvent ev) { 
    // TODO Auto-generated method stub 

    if ((System.currentTimeMillis() - mainScreenActivity.lastLoggedIn)/1000 >= 120) { 
     //startActivity(pinVarificationActivity); 
     //Toast.makeText(getApplicationContext(),"Session has timed out, please enter your PIN",Toast.LENGTH_LONG).show(); 

     LayoutInflater inflaterPinVerificationDialog = this.getLayoutInflater(); 
     final View inflatorPinVerificationDialog = inflaterPinVerificationDialog.inflate(R.layout.dialog_pin_verification, null); 
     final AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.AlertDialogCustom)); 
     builder.setTitle("Session timed out. Please enter PIN"); 
     builder.setView(inflatorPinVerificationDialog); 
     pinFromDialog = (EditText) inflatorPinVerificationDialog.findViewById(R.id.etDialogPin); 

     builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface arg0, int arg1) { 
       String dialogPinValue = pinFromDialog.getText().toString(); 

       String sharedPrefPinVal = loginData.getString("pin", "not found"); 
       if (sharedPrefPinVal.equals(dialogPinValue)) { 
        Toast.makeText(getApplicationContext(), "login successful", 
          Toast.LENGTH_SHORT).show();      
        mainScreenActivity.lastLoggedIn = System.currentTimeMillis(); 
        alertDialogPinVerification.dismiss(); 


       } else { 
        Toast.makeText(getApplicationContext(), 
          "Incorrect pin - Please try again", 
          Toast.LENGTH_LONG).show(); 
       } 

      } 
     }); 
     builder.setNegativeButton("Forgot PIN", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // TODO Auto-generated method stub 

      } 
     }); 
     alertDialogPinVerification = builder.create(); 

     alertDialogPinVerification.show(); 

    } else {    
     mainScreenActivity.lastLoggedIn = System.currentTimeMillis(); 
    } 
    return super.dispatchTouchEvent(ev); 
} 

ответ

0

Похоже, что вы делаете это для каждого события касания. И если вы пытаетесь сделать это только один раз, вам следует, возможно, проверить, что MotionEvent прошел и вызвать ответ только для TouchDown. Возможно, вы можете вызвать несколько диалоговых окон предупреждений, основанных на событиях, которые запускаются при прикосновении, прикосновении, перемещении и т. Д. Это приведет к тому, что он снова откроется, но это действительно потому, что есть несколько друг за другом.

@Override 
    public boolean dispatchTouchEvent(MotionEvent ev) 
    { 
     if(ev.getAction() == MotionEvent.ACTION_DOWN) 
     { 

Для того, чтобы сохранить предупредительного открытое окно, вы можете следить за несколько предложений, как указано в этих двух статьях: Tech Tips или Re-create AlertDialog. Оба из них полагаются на переопределение и создание собственного окна AlertDialog.

+0

Привет, Джей, спасибо за ваш ответ, это сработало для меня сейчас. В настоящий момент он отменяет диалог с сообщением тоста как неправильный вывод. Можете ли вы предложить, что делать, если я не хочу отменять диалог, когда PIN-код неправильный или как открыть диалог для ввода PIN-кода – BRDroid

Смежные вопросы