2016-12-05 13 views
0

基本的に私はダイアログ(AlertDialogをシンプルに表示)したいのですが、私はcustomTitleビューとカスタムビューを膨らませます。AlertDialogの複数のレイアウト間の変更

AlertDialog.Builder adb = new AlertDialog.Builder(getContext()); 
adb.setCustomTitle(getLayoutInflater(savedInstanceState).inflate(R.layout.dialog_custom_title), null); 
adb.setView(R.layout.dialog_first_layout); 
adb.show(); 

このダイアログ内のボタンをクリックすると、ダイアログ全体ではなく、ダイアログのコンテンツを置き換えたいと思います。

adb.setView(R.layout.dialog_second_layout); 
adb.show(); // or adb.create(); 

これは機能しません。

ところで、私も対話の中のフラグメントマネージャーについて考えましたが、それが正しいかどうかわかりません。

私は助けをお伝えします! おかげ

+0

どうしたらうまくいかないのですか? –

+0

本当ですか?しかし、実際にはそれが動作します – HendraWD

+0

私はこれを行うと、一番最初に作成されたダイアログの上にダイアログが表示されます。代わりに、最初のダイアログ内のレイアウトを置き換えたい –

答えて

0

、このいずれかを試してみてください、あなたが何か問題に持っているなら、私に知らせて

final AlertDialog.Builder adb = new AlertDialog.Builder(getContext()); 
adb.setCustomTitle(getLayoutInflater(savedInstanceState).inflate(R.layout.dialog_custom_title), null); 
adb.setView(R.layout.dialog_first_layout); 
Dialog dialog = adb.show(); 
dialog.findViewById(R.id.your_button_id).setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     dialog.setContentView(R.layout.dialog_second_layout); 
    } 
}); 

編集: [OK]を、私は、カスタムタイトルを予約する任意の方法があるとは思わないので、そのあなたが欲しい行動にAlertDialog.Builderに設定し、あなたがこれを行うことができます代わりに

AlertDialog.Builder adb = new AlertDialog.Builder(this); 
final Dialog dialog = adb.create(); 
dialog.setContentView(R.layout.dialog_first_layout_with_title); 
dialog.findViewById(R.id.your_button_id).setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     dialog.setContentView(R.layout.dialog_second_layout_with_title); 
    } 
}); 
dialog.show(); 

基本的な考え方は、ダイアログディレクトリのコンテンツビューを設定しています間違い(タイトルと内容を含む)

+0

あなたの答えをありがとうが、それは、元のダイアログの上にダイアログが期待どおりに表示されます。私は本当に "contentView"を置き換えたいと思っています –

+0

ああ、私はあなたが今何を期待しているか知っています:) – HendraWD

+0

ありがとうございます。残念ながら、titleViewが消えてダイアログにリセットすることはできません。 –

関連する問題