私は、ビューとその内容または状態を破壊することなく、Androidでアラートダイアログを使用しようとしています。内容を破壊することなくアラートダイアログビューを再利用
たとえば、いくつかの編集テキストフィールドを含むビューでダイアログを膨張させています。私はこれらのフィールドに値を入力してから、警告ダイアログを非表示にして、後で警告ダイアログを再び表示して、同じ状態にあるすべての値を表示します。
私のアプリケーションでは、ビューのコンテンツに関するコメントを(警告ダイアログを使用して)入力してから、メインビューに戻り、作業と読書を続け、コメントを追加する必要があります。私は変数やsqlite3データベースにこれらの値を保存することができます知っているしかし、私はちょうどそれを破壊せずにビューを保持することができますとそのような回避策のように感じると、私は再びダイアログを開いて、古いビューを置き換えてもう一度表示します。
私は次のことを試してみました:
//Class variables
private AlertDialog.Builder builderSave = null;
private LayoutInflater inflater = null;
private View layout = null;
//In my code where I create the dialog ...
try {
if (builderSave == null) {
//inflate view for layout for the first time.
inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
layout = inflater.inflate(R.layout.dialog_id_form, (ViewGroup) findViewById(R.id.layout_root));
builderSave = new AlertDialog.Builder(mContext);
builderSave.setView(layout);
} else {
//niks
}
} catch (Exception e) {
//daar was n nullpointer exception...
}
ダイアログに2回目表示しようとしたときにしかし、私はエラーを取得:
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
Daniel W、上記のお返事ありがとうございます。間違いなく私は素晴らしい議論をすることができると確信しています。正直言って、データをデータベースに保存して後で使用する方が好きです。 私は、ビューの状態を維持することがより理にかなっていると考える特定のケースがいくつかあります。アラートダイアログとメインビューは同じワーク/コンテキストを共有しているので、私の場合、ユーザーはメインビューを描画し、アラートダイアログで図面についてのコメントを作成しますが、メインビューに戻り、何が描かれたのか、その後、警告ダイアログに戻り、コメントをつけて続行します。 – Janpan