0

私はEditTextユーザーがに8桁の数字を挿入する必要がある場所で作業しており、ユーザーがEditTextそれを挿入すると、アプリはそれを受け入れるかキャンセルできるかを確認するためのダイアログを表示します。

問題は、このダイアログメッセージでは、初めて挿入された番号のみが使用されるため、ユーザーが番号を変更しても、ダイアログは常に同じであるということです。

例:ユーザーが12345678を紹介すると、ダイアログメッセージに「...12345678」と表示されます。ただし、ユーザーが番号を変更した場合、たとえば98765432の場合、メッセージは「...12345678」のままです。

コードは次のとおりです。

public void onCreate(Bundle icicle)
   {
      super.onCreate(icicle);
      setContentView(R.layout.identificacion);
      Button bSiguiente = (Button) findViewById(R.id.btn_siguiente);
     dniText = (EditText) findViewById(R.id.dni_candidato);





bSiguiente.setOnClickListener(new View.OnClickListener() {
    public void onClick(View arg0) {

  //  try{


   //     catch (NumberFormatException e)
   //   //  {
        //  }
   user = Integer.parseInt(dniText.getText().toString());
     String longitud = dniText.getText().toString();
     DNIWord(user);

     if(longitud.length()==8){
         showDialog(DIALOG_CONFIRMAR_CANDIDATO);
     }
     else{
         showDialog(DIALOG_ERROR_DNI);

     }

    }

});

}

protected Dialog onCreateDialog (int id){

     switch (id) {
     case DIALOG_CONFIRMAR_CANDIDATO:
           return new AlertDialog.Builder(this)
               .setIcon(R.drawable.icon_warning)
               .setTitle(R.string.confirmardni)
               .setMessage("Tu DNI es "  +DNIWord(user)+  " ?")
               .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int whichButton) {
                       Intent i = new Intent(Ident.this,Autorizacion.class);
                     startActivity(i);
                    }
               })
               .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int whichButton) {

                   }
               })

               .create();

     case DIALOG_ERROR_DNI:
           return new AlertDialog.Builder(this)
               .setIcon(R.drawable.ic_error)
               .setTitle(R.string.error)
               .setMessage(R.string.errordni)
               .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int whichButton) {

                    }
               })

               .create();
}

    return null;


}
 public static String DNIWord(int user) {
     user = Integer.parseInt(dniText.getText().toString());
      return (String.valueOf(user)   + "-"+   NIF_STRING_ASOCIATION.charAt(user % 23));

    }
}
4

1 に答える 1

1

onCreateDialog(int id)は、特定のIDのダイアログが作成されたときに1回だけ呼び出されます。ダイアログが作成されると、同じIDに対してメソッドが呼び出されることはありません。

問題を解決するには、onPrepareDialog(int id、Dialog dialog)メソッドをさらにオーバーライドする必要があります。ダイアログが表示される前に、メソッドが毎回呼び出されます。

http://developer.android.com/reference/android/app/Activity.html#onPrepareDialog(int、android.app.Dialog

次のようにコードを修正できます。

@Override
protected void onPrepareDialog(int id, Dialog dialog) {
    super.onPrepareDialog(id, dialog);
    if (id == DIALOG_CONFIRMAR_CANDIDATO) {
        ((AlertDialog)dialog).setMessage("MESSAGE TO BE SHOWN");
    }
}

これがうまくいくことを願っています。

于 2013-02-14T14:17:45.120 に答える