2016-04-06 5 views
0

私は2つの主要な活動があり、残りのページはフルスクリーンDialogFragments(別のActivityではなく)、 、ある時点ではDialogFragmentから別のDialogFragmentを開いています。最初のDialogFragmentは、戻るボタンが押された場合、またはその上のDialogFragmentが破棄された場合、どのようにして知ることができますか?バックプレス後にDialogFragmentが再び表示されるのをどのように知ることができますか?

アクティビティの一部のビューを置き換えることを望まないため、DialogFragmentをバックスタックに追加していません。

onResume()onHidden()を上書きしようとしました。私はFragmentManagerにイベントを追加しようとしましたが、関連する結果が得られませんでした。

誰かが私がこれをどうやってできるかについての光を放つことができたら嬉しいですね。

私の目標は、上記のダイアログが却下された後にそれが示したときに(サーバーまたはI、前のページに影響を与え、ダイアログで行われた変更からの新しいデータ)DialogFragmentActivityをリフレッシュすることです。

+0

ダイアログショーコールの場所は制御しないでください。 – Nanoc

+0

いいえ、表示されているもののすぐ後ろにあります。 – asaf

+0

しかし、あなたはそれを制御します。ダイアログに通知するためにインターフェイスコールバックを使用できますか? – Nanoc

答えて

0

あなたはいくつかの選択肢があります。最も簡単な方法は、インターフェイスを使用することです。あなたのデータは、画面間の同期にあることについてだけ心配している場合

public class TopFragment { 
    private OnDismissListener mListener; 

    public void setOnDismissedListener(OnDismissListener listener) { 
     mListener = listener; 
    } 

    private void dismiss() { 
     mListener.onDismissed(); 
    } 

    public interface OnDismissListener { 
     void onDismissed(); 
    } 
} 

public class BottomFragment implements TopFragment.OnDismissListener { 
    @Override 
    public void onDismissed() { 
     //reload views 
    } 

    private void createTopFragment() { 
     TopFragment fragment = new TopFragment(); 
     fragment.setOnDismissedListener(this); 
    } 
} 

しかし、あなたはまた、あなたのデータの変更をリッスンするために、データベースContentObserverのようなもの、BroadcastReceiver、またはある種のイベントバスを使用することができますし、それに応じてビューを更新します。これらのうちの1つはおそらく、あなたの2つの断片を切り離すので、はるかに良いパターンになりますが、リスナーを使用すると、2つの断片が切り離されます。

+0

よろしくお願い致します。それは良いアイデアです! – asaf

関連する問題