2016-09-14 3 views
0

ダイアログでアプリをコーディングしています。私はそれがダイアログ巣に賢明ではないことを読んで、私は最初にDialogFragmentと呼ばれる活動に戻ってAlertDialogに(NumberPickersで)選択された値を返すようにインタフェースを設定しました場所。DialogFragmentの前のインスタンスに戻る

この活動は、そのダイアログユーザーに彼が最初ダイアログで選択したものを確認する機会を与える別のDialogFragmentを呼び出します。彼が確認した場合は、意図は、次の活動に彼がかかりますが、ない場合は、私は彼が最初にダイアログの前のインスタンスに戻り、必要な変更を行うことができるようにしたいです。

Iは、第ダイアログ正ボタンによって実現されるコードからコマンドdialog.dismiss()を削除しようとしたが、私はダイアログ秒を残したときに無駄に、第ダイアログが消えていました。

私はその後ダイアログの前のインスタンスが再び現れることを期待して、FragmentManagerbackstackを「ポップ」してみました。私は間違っていた。

A)私はダイアログがアクティブに保つことができるかの現実的な理解を持っていない:

builder.setNegativeButton(R.string.reset_duration, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int whichButton) { 
       //return to the previous instance of SDDialogFragment 
       int count = getFragmentManager().getBackStackEntryCount(); 
       if (count != 0) { 
        getFragmentManager().popBackStack(); 
       } 

私は私のエラーは二つの点にあると思います。

b)フラグメントのインスタンスをダイアログと混同しています。

すべてで、私がやりたいことが実現可能である場合、誰かが私に助言してくださいだろうか、私は以前インスタンスに戻っについてバンドルを使用して値を転送するという点で考えると忘れなければなりません?ありがとう:)

答えて

0

ダイアログはアクティブのままではできませんが、あなたのダイアログをonDismiss()で戻すことができます。

この試してみてください。そして、あなたはonDismiss(DialogInterfaceダイアログ)であなたのダイアログを取り戻すだろうリスナー解任yourDialog.setOnDismissListener(this);

をあなたのダイアログを表示する前にあなたの活動はonDismissListener を実装します を設定

私が示すことを得る方法に
+0

もう一度ダイアログ? (ダイアログを書くオプションはありません。 –

+0

ユーザがダイアログボックスで選択したすべてをクラスメンバーとして保持し、onDismissで取得できます。次に、そのダイアログを再び表示する必要があるときに、このデータを新しいダイアログに渡します。ダイアログ自体のonCreateのフィールドを作成して再投入します。 –

+0

onDismiss()でgetDialog()を使ってクラスメンバーのデータを抽出しようとしましたが、NullPointerExceptionが発生しました。あなたはどう思いますか?:) –

関連する問題