2012-05-25 3 views
6

Я использую следующий код, чтобы прочитать карту типа HashMap<String, String> из посылок:Какой загрузчик классов использовать с Parcel.readHashMap?

in.readHashMap(HashMap.class.getClassLoader()); 

Это, кажется, работает нормально, но я получаю предупреждение:

Type safety: The expression of type HashMap needs unchecked conversion to conform to Map<String,String> 

Есть ли «правильный» способ сделать это, использовать другой загрузчик классов? Или я должен просто пойти с @SuppressWarnings("unchecked")?

ответ

6

Документация Android разработчик Parcel.readHashMap() говорит:

Пожалуйста, используйте readBundle(ClassLoader) вместо (данные которого должны быть были написаны с writeBundle(Bundle)

Так может быть, вы должны использовать readBundle() и writeBundle() вместо этого..

+12

Спасибо за подсказку! Хотя это, строго говоря, не ответ на вышеупомянутый вопрос, это solv моя проблема. Вот что я сделал: При записи в посылку: 'Bundle расслоения = новый Bundle();' \t \t \t 'bundle.putSerializable ("карта", MyMap);' ' dest.writeBundle (расслоение); ' При повторном чтении из посылки: ' Bundle расслоения = in.readBundle(); '' @SuppressWarnings ("непроверенный") '' HashMap MyMap = (HashMap ) bundle.getSerializable ("map"); ' this.myMap = myMap;' – hdort

+0

ОК, я хотел отформатировать это лучше, но это просто не работает для меня. Сожалею! – hdort

+0

использовать readBundle (classLoader), если ваш hashmap имеет доступные объекты. –