2017-09-09 1 views
0

Ich bin auf der Suche nach einer Möglichkeit, PersistableBundle zu Bundle in Android zu konvertieren. Gibt es einen einfacheren Weg dies zu tun? Beide erben nicht von derselben Klasse und daher kann ich sie nicht typisieren.Wie konvertiert man PersistableBundle zu Bundle in Android?

Edit:

fand ich diese Art und Weise

public static Bundle getBundleFromPersistableBundle(final PersistableBundle persistableBundle) { 
    Bundle bundle = new Bundle(); 
    if(persistableBundle == null) { 
     return null; 
    } 
    bundle.putAll(persistableBundle); 
    return bundle; 
} 

Antwort

1

Sie kopieren können ein Bundle aus einer PersistableBundle Instanz konstruieren.

PersistableBundle pb = new PersistableBundle(); 
Bundle b = new Bundle(pb); 

Siehe the documentation für diesen Konstruktor:

Konstruiert ein Bundle eine Kopie der Zuordnungen aus dem gegebenen PersistableBundle enthält. Ist nur eine flache Kopie des PersistableBundle - siehe deepCopy(), wenn Sie das nicht möchten.

+0

fand ich einen Weg, dies zu tun: public static Bundle getBundleFromPersistableBundle (endgültige PersistableBundle persistableBundle) { Bundle Bundle = new Bundle(); if (persistableBundle == null) { Rückgabewert null; } bundle.putAll (persistableBundle); Rückführbündel; } – user2267399

+0

Dieses Code-Snippet erstellt und verwirft unnötigerweise ein Bundle, wenn es mit einem 'Null'-PersistableBundle-Argument aufgerufen wird. Suchen Sie nach dem Nullargument * zuerst * und ordnen Sie das Bündel nur dann zu, wenn Sie tatsächlich eins zurückgeben. – ctate

+0

@ctate dieses Code-Snippet definiert auch die PeristableBundle, so ist es per Definition nicht null –

Verwandte Themen