1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package com.reactnativenavigation.bridge;
-
- import android.os.Bundle;
-
- import com.facebook.react.bridge.ReadableArray;
- import com.facebook.react.bridge.ReadableMap;
- import com.facebook.react.bridge.ReadableMapKeySetIterator;
-
- public class BundleConverter {
- public static Bundle toBundle(ReadableMap map) {
- Bundle bundle = new Bundle();
- ReadableMapKeySetIterator it = map.keySetIterator();
- while (it.hasNextKey()) {
- String key = it.nextKey();
- switch (map.getType(key)) {
- case Null:
- break;
- case Boolean:
- bundle.putBoolean(key, map.getBoolean(key));
- break;
- case Number:
- putNumber(bundle, map, key);
- break;
- case String:
- bundle.putString(key, map.getString(key));
- break;
- case Map:
- bundle.putBundle(key, toBundle(map.getMap(key)));
- break;
- case Array:
- bundle.putBundle(key, toBundle(map.getArray(key)));
- break;
- default:
- break;
- }
- }
- return bundle;
- }
-
- private static void putNumber(Bundle bundle, ReadableMap map, String key) {
- try {
- bundle.putInt(key, map.getInt(key));
- } catch (Exception e) {
- bundle.putDouble(key, map.getDouble(key));
- }
- }
-
- public static Bundle toBundle(ReadableArray array) {
- Bundle bundle = new Bundle();
- for (int i = 0; i < array.size(); i++) {
- String key = String.valueOf(i);
- switch (array.getType(i)) {
- case Null:
- break;
- case Boolean:
- bundle.putBoolean(key, array.getBoolean(i));
- break;
- case Number:
- bundle.putDouble(key, array.getDouble(i));
- break;
- case String:
- bundle.putString(key, array.getString(i));
- break;
- case Map:
- bundle.putBundle(key, toBundle(array.getMap(i)));
- break;
- case Array:
- bundle.putBundle(key, toBundle(array.getArray(i)));
- break;
- default:
- break;
- }
- }
- return bundle;
- }
- }
|