Как передать объект другому виду деятельности? Если объект уже реализует интерфейс (поэтому он не может реализовать Parcelable)?

Я пытаюсь передать Объект от одного действия другому, и я знаю, что должен использовать Parcelable или же Serializable но мой класс Object уже реализует интерфейс. Есть ли способ обойти это?

5 ответов

Решение

Объекты могут реализовывать несколько интерфейсов:

class MyClass implements Interface1, Parcelable {
  // Implement each interface
}

Я думаю, что правильно просто использовать Intent.putExtras() - где вы можете передавать примитивные типы данных + объекты типа String, Bundle, Parcelable, Serializable. Вы просто используете пары ключ / значение. И после этого вы можете получить свои данные с помощью Intent.getExtras(). Все довольно просто. Также взгляните на эти ссылки, они предназначены для начинающих, но действительно полезны: http://developer.android.com/guide/components/intents-filters.html и http://www.vogella.com/tutorials/AndroidIntent/article.html. Если проблема где-то глубже - опишите, пожалуйста. Благодарю.

Конечно! Класс может реализовывать несколько интерфейсов. Вам просто нужно будет разделить каждую из них запятой в объявлении класса, как это...

public class YourClass implements interface1, interface2, interface3 { 
    //...
}

Объект не может расширять более одного класса, но может реализовывать множество интерфейсов.

Parcelable and `Serializable` are the way but little complex. an easy solution is just use `Gson` or any other JSON library..

в первой деятельности.

String objJson = new Gson().toJson(object);
intent.putExtra("key",objJson);

и в вашем втором занятии

YourClass yourClass = new Gson().fromJson(getIntent().getStringExtra("key"),YourClass.class) ;

для библиотеки Gson проверьте эту ссылку http://www.java2s.com/Code/Jar/g/Downloadgson222jar.htm

Другие вопросы по тегам