2016-08-08 26 views
1

Ich habe eine Fragment (A) mit Recycler anzeigen. Wenn ich auf ein Element drücke, wird das DialogFragment (mit Details zu diesem Element) angezeigt. Wenn ich die Löschtaste drücke, wird das Element gelöscht und das Fragment A wird angezeigt (mit Änderungen). Meine Frage ist wie man benachrichtigt, dass Element gelöscht wurde? Ich möchte eine Snackbar mit undo Option zeigen.Snackbar Rückruf von einem anderen Fragment

public interface OnDeletedItem { 
     void onDeletedItem(Item deletedItem); 
    } 

Machen Sie Ihre Aktivität die Schnittstelle,

public class MainActivity 
     extends AppCompatActivity 
     implements DialogFragment.OnDeletedItem 

    @Override 
    public void onDeletedItem(Item deletedItem) { 

      // get the Fragment A from fragment manager and notify it via public method to show a Snackbar with the Undo option as desired 

FragmentA fragmentA = (FragmentA) getFragmentManager().findFragmentByTag("FragmentA"); 
fragmentA.showSnackbarForDeletedItem(deletedItem); // implement showSnackbarForDeletedItem or similar method in FragmentA 
getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); 
    } 

Dann implementieren, wenn Sie: Ich habe nichts auf Google ..

Dank

+0

Da die Kommunikation zwischen Fragmenten über die Aktivität empfohlen wird, können Sie eine Schnittstelle in Ihrem Dialogfragment implementieren, die die Hauptaktivität des Löschens von Elementen benachrichtigt, die dann Fragment A über eine andere Schnittstelle zur Aktualisierung oder was auch immer benachrichtigt. – akdsouza

+0

Ich habe eine Antwort hinzugefügt – akdsouza

Antwort

3

Definieren Sie eine Schnittstelle in der DialogFragment gefunden Drücken Sie die Schaltfläche Löschen im DialogFragment:

try { 

    ((OnDeletedItem)getActivity()).onDeletedItem(deletedItem); 

    } catch (ClassCastException cce) {}