2016-05-03 9 views
2

Kann jemand sagen, was der Unterschied zwischen den folgenden Ansätzen für die gemeinsame Nutzung von Daten zu Fragmenten sein wird?Übergabe von Daten an ein Fragment über das Bundle ODER eine öffentliche Methode, die im Fragment definiert wurde

  • Verwendung von Bundle.

    Bundle args = new Bundle(); 
        args.putString(ARG_PARAM1, param1); 
        args.putString(ARG_PARAM2, param2); 
        fragment.setArguments(args); 
    
  • Verwenden eines öffentlichen Methode innerhalb Fragment definiert ist.

    MyFragment fragment = new MyFragment(); 
    fragment.setData("param"); 
    
    
    public void setData(String param1) { 
         this.param1 = param1; 
        } 
    

Antwort

3

The Bundle ist eingebaut und durch den Rahmen unterstützt. Wenn das Fragment automatisch aufgrund des Lebenszyklus vom Framework abgebrochen und neu erstellt wird, erhalten Sie immer noch die Bundle zurück. Im zweiten Fall wird das private Datenelement param1 nicht automatisch vom Framework neu erstellt, wenn Fragment abgerissen und neu erstellt wird. Aus demselben Grund verwenden Sie keine überladenen Konstruktoren mit Fragment.

0

Verwenden Sie eine Bundle, wenn Sie Daten an eine fragment bereitstellen möchten, aber innerhalb der fragment entscheiden möchten, wann diese Daten verwendet werden sollen.

Verwenden Sie einen Methodenaufruf, wenn Sie Daten an eine bereits aktive fragment übergeben möchten und sofortige Reaktion von der fragment erwarten.

0

Sie müssen auch eine Instanz der Klasse haben, von der Sie auf die Daten zugreifen möchten. Dies kann zu Speicherverlusten führen Wenn Sie öffentliche Methoden häufig anstelle von Bundle verwenden, Via Bundle können Sie Daten ohne Referenz über Android-Nachrichtenmechanismus

teilen