Как передать объект другому виду деятельности? Если объект уже реализует интерфейс (поэтому он не может реализовать 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