2016-06-16 4 views
-1

現在のシナリオAlertDialog.Builderと却下方法の混乱

私は私のアプリでGridViewコントロールを持っており、すべての細胞は、画像とテキストのカスタムレイアウトです。

ユーザが任意のセルをタッチすると、それがコード

final AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setView(layout); 
     builder.show(); 

を以下介して対話を開く今builder.setView(layout)におけるオブジェクトのレイアウトはImageViewのレイアウト、テキストボックス、ボタンを有し、次のコードを介して設定されている

ユーザーがテキストボックスを埋め、私は警告ダイアログが「離れて行く」ことが、私はこれを行うための方法を見つけることができませんしたいボタンを押す今
layout = inflater.inflate(R.layout.buy_set_quantity, null); 

。私はbuilder.dismiss()を使用してみましたが、

cancel(); 

hide(); 

remove(); 

finish(); 

aswell何の方法がAlertDialog.Builder型オブジェクトのために閉じていないと、次があり、この質問はスタックオーバーフローに何度も頼まれてい

を試してみましたが、何

とすべての人が​​を使用していると答えていないか、それともどういうことがあるのでしょうか?

どのようにあなたはどのような作品AlertDialogue.Bulder()

を却下しますか?

すべてのアンドロイドで画面の下部にある3つのボタンから戻るボタンが押され、ダイアログボックスは閉じられます。しかし、それはどのようにすべきかではありません。だから私はメソッドonBackPressed();を呼び出しましたが、それはダイアログを閉じるだけでなく、以前のアクティビティにユーザーを引き込みます。

実際に動作する新しい方法や別の方法は、誰でも知っていますか?

+0

可能な複製(http://stackoverflow.com/questions:たとえば[AlertDialog.Builderを却下する方法?]/11285235/how-to-dismiss-alertdialog-builder) –

+0

私は既にそれを見て、AlertDialogue.bulderはこれらのメソッドを持たず、OPでもその投稿に書かれていることを記事で述べました。もう一度見てください。 –

答えて

1

ダイアログを取得するには、create()に電話してから、ダイアログを閉じます。

final Dialog dialog = new AlertDialog.Builder(this) 
     .setView(layout) 
     .create(); 
dialog.show(); 

// later, when you need to dismiss the dialog 
dialog.dismiss(); 
+0

DialogueクラスではなくAlertDialogue.Builderです。メソッド名はdismiss()です。 –

+0

私はあなたのコードを作った。 setViewをsetContentView()に変更します。作成を取り除くと正常に動作します。ヒントをありがとう –

0

あなたは外部のブール変数を作成し、onBackPressedを(上書きすることができます)の

boolean isOpen = false; 
void showDialogBuilder() 
{ 
    final AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setView(layout); 
    builder.setOnDismissListener(new DialogInterface.OnDismissListener() { 
     @Override 
     public void onDismiss(DialogInterface dialog) { 
      isOpen = false; 
     } 
    }); 
    isOpen = true; 
    builder.show(); 
} 

@Override 
public void onBackPressed() 
{ 
    if(isOpen) 
    { 
     isOpen = false; 
     return; 
    } 

    super.onBackPressed(); 
}