Android: как разделить POJO между действиями - PullRequest
0 голосов
/ 11 марта 2011

Я портирую программу на Android. У меня есть вся бизнес-логика в POJO, поэтому мне нужно использовать Activity как простой интерфейс.

Проблема в том, что я не знаю, как делить POJO между Деятельностями; Я пытался с этим, но это не работает:

class Activity1 extends Activity{
Logic logic=new Logic();

public Logic getLogic(){
return logic
}
}

class Activity2 extends Activity{
Logic logic;
public void onCreate(Bundle savedInstanceState) {
    main = (Activity1) findViewById((R.id.Activity1);
    logic= main.getLogic(); 
}
}

Обратите внимание, что POJO не для обмена данными, он фактически содержит бизнес-логику.

Ответы [ 4 ]

6 голосов
/ 11 марта 2011

Ваши POJO должны реализовывать интерфейс Parcelable.Затем вы можете поместить их в Intents, используя putExtra, и получить их в следующем упражнении, используя getParcelableExtra.http://developer.android.com/reference/android/os/Parcelable.html

2 голосов
/ 11 марта 2011
main = (Activity1) findViewById((R.id.Activity1);

findViewById работает только для просмотров!Его не следует использовать для действий, поскольку действие больше похоже на «экран», а не на само представление.

Если ваша бизнес-логика может быть одноэлементной, я бы порекомендовал сделать еетак.Это должен быть самый простой способ.

2 голосов
/ 11 марта 2011

Если вы начнете другое действие с одного действия, введя Intent , вы можете передать POJO, используя метод putExtra().В новом упражнении, в котором вы получаете намерение, вы можете вернуть POJO, используя getXXXExtra(), где XXX - это тип POJO.

Вам также следует взглянуть на http://developer.android.com/guide/topics/intents/intents-filters.html для лучшегопонимание того, что такое Intents и как они работают вместе с Activity.

edit: как указано в других ответах, вам придется реализовать Parceable или Serializable Interface.

1 голос
/ 11 марта 2011

Я вижу, что вы смешиваете две разные вещи: findViewById даст вам View, а не Activity, как то, что вы пытались сделать.

Если вашей логике не нужно сохранять состояние между действиями, вы можете просто создать новый объект в обоих действиях

Logic logic=new Logic();

Если вы хотите сохранить состояние, предполагая, что это POJO , вы можете отправить данные через намерение, когда вы «вызываете» второе действие

intent.putExtra("MyInt", 123);
intent.putExtra("MyString", "hello!");
//...

и затем во втором упражнении

intent.getIntExtra("MyInt"); // 123
intent.getStringExtra("MyString"); //"hello!"

Другой вариант - реализовать parcelable . У вас есть образец по этой ссылке.

...