2012-02-28 8 views
1

Androidのダイアログ:ダイアログを閉じた後にどこに戻りますか?私は「onCreateDialog」メソッドを使用して、アクティビティから警告ダイアログを開いてい

protected Dialog onCreateDialog(int id) { 
     Dialog dialog = null; 
     switch(id) { 
     case DIALOG_PASSWORD_VERIFICATION: 
      LayoutInflater factory = LayoutInflater.from(this); 
      final View passwordDialog = factory.inflate(R.layout.password, null); 

      AlertDialog.Builder alert = new AlertDialog.Builder(this); 

      alert.setTitle("Please enter your password"); 
      alert.setView(passwordDialog); 
      alert.setCancelable(false); 
      alert.create(); 

      alert.setPositiveButton("Ok", new PasswordDialogListenerOk(
        passwordDialog, getApplicationContext())); 
      alert.setNegativeButton("Cancel", new PasswordDialogListenerOk(
        passwordDialog, getApplicationContext())); 

      alert.show(); 
      break; 
     default: 
      dialog = null; 
     } 
     return dialog; 
    } 

すべてが罰金とスムーズに動作しますが、私は戻って私の活動に取得していますか見当もつかない。ダイアログは消えますが、ダイアログの終了後にアクティビティの戻り点はどこにありますか?

答えて

1

アクティビティに戻るための実際の「どこ」はありません。ある時点でOnResumeに行きますが、ダイアログが一旦消去されたら、何かをやってみたいのであれば、そのコードをリスナーに入れてください(この場合はPasswordDialogListenerと呼んでいます)。特定のものを使用したい場合は、達成しようとしていることを説明する必要があります。

+0

リスナーでは、ダイアログでユーザーが入力したパスワードを確認するためにサーバーを呼び出します。パスワードが確認されたら、アクティビティに戻ってTextView要素の値を変更したいと考えています。私はそれにアクセスできないので、リスナーのこの要素を更新できません。 – pfust75

+0

リスナーにアクセスを許可してください。それを行うにはいくつかの方法があります。リスナーのコードが非同期でない場合、内部のリスナーが完了した後にUIを更新する別のリスナーに 'PasswordDialogListener'をラップすることができます。リスナーにコールバックを渡すことも、リスナーを内部クラスにすることも、リスナーにビューを渡して更新することもできます(リークしないようにするだけです)。 – kabuko

関連する問題