¿Comprueba si dos objetos Bundle son iguales en Android?
Me gustaría comprobar si dos paquetes son iguales, ¿hay alguna manera de hacer que en lugar de comprobarlos clave por clave?
- ¿Qué es un "lote" en una aplicación de Android?
- ¿Qué significa bundle en Android?
- Se produce ClassCastException en onRestoreInstanceState
- Cómo poner una vista en el paquete
- ¿Cómo puedo saber cuán grande es para hacer mi matriz de Parcel.readStringArray ()?
- Definición de Android Bundle
- NullPointerException (etc) de Parcel.readException
- ¿Cómo serializar Android Bundle para almacenamiento en red y / o persistente?
- Valor predeterminado en Bundle.getString (clave de cadena)
- Fragmentos del paquete onCreateView (). ¿De dónde viene?
- ¿Cómo usar Parcel en Android?
- Paso de paquete entre tres actividades en Android
- Android Parcel.obtain () devuelve null?
Aquí hay una manera de probar si dos paquetes son los mismos:
- Compruebe sus tamaños, no se moleste si no son iguales
- Si ambos valores son objetos Bundle, utilice la recursión
- Debido a que un valor para una clave en
one
puede sernull
, asegúrese de que ambos valores sonnull
y que la clave realmente existe entwo
- Finalmente, compare los valores de las claves coincidentes
Código:
public boolean equalBundles(Bundle one, Bundle two) { if(one.size() != two.size()) return false; Set<String> setOne = one.keySet(); setOne.addAll(two.keySet()); Object valueOne; Object valueTwo; for(String key : setOne) { if (!one.containsKey(key) || !two.containsKey(key)) return false; valueOne = one.get(key); valueTwo = two.get(key); if(valueOne instanceof Bundle && valueTwo instanceof Bundle && !equalBundles((Bundle) valueOne, (Bundle) valueTwo)) { return false; } else if(valueOne == null) { if(valueTwo != null) return false; } else if(!valueOne.equals(valueTwo)) return false; } return true; }
private static boolean equalsBundles(Bundle a, Bundle b) { Set<String> aks = a.keySet(); Set<String> bks = b.keySet(); if (!aks.containsAll(bks)) { return false; } for (String key : aks) { if (!a.get(key).equals(b.get(key))) { return false; } } return true; }
- Obtener el error "no se puede resolver el método" al intentar implementar getSharedPreferences en Android Studio
- Android: Efecto de parpadeo ListView. ¿Algún consejo sobre cómo deshacerse de esto?