2015-07-12 3 views
4

У меня есть три разных класса или действия в массиве. Каждый класс представляет собой загадку. У меня есть функция, которая перестраивает массив в начале приложения, чтобы пользователь не видел одну и ту же головоломку каждый раз, когда они начинают приложение.Android - Передача массива классов между действиями

Я хочу передать этот массив классов от активности к активности. Я могу настроить массив для передачи, но не знаю, как получить его в следующем действии.

Здесь установленный в деятельности Один

Class[] array = {PuzzleOne.class, PuzzleTwo.class, PuzzleThree.class}; 
Intent goToPuzzleOne = new Intent(MainActivity.this, array[0]); 
goToPuzzleOne.putExtra("classes",array); 

Как получить этот класс в деятельности два? Вот что я до сих пор

Bundle extras = getIntent().getExtras(); 
Class[] array = extras.NO IDEA HOW TO RETRIEVE IT HERE 

Пожалуйста, дайте мне знать, если есть решение. Спасибо.

ответ

2

Поскольку мы имеем дело с карты, вы должны пойти с:

Object[] array = (Object[]) extras.get("classes"); // you cannot cast to Class[] ! 

, а затем:

Class a = (Class) array[0]; // and etc. 
1

Вы можете посмотреть, что тип второго параметра putExtra("classes", array) является, что оказывается Serializable.

Таким образом, вы можете получить его обратно с getSerializable() и брось в массив класса:

Class[] array = (Class[]) extras.getSerializable("classes"); 
+0

Спасибо, что работает! В прошлом я не занимался сериализацией, и хотя это работает, я не совсем уверен, почему? Что значит для сериализации класса? Является ли сериализация главным образом для классов? Спасибо, понимание кода очень помогает мне. Я ценю это! –