Передать ссылку на другой вид деятельности - Android - PullRequest
1 голос
/ 20 июня 2010

Я очень новичок в Android, поэтому я экспериментирую с кодом учебника.В частности, блокнот.

Если вы посмотрите здесь: http://developer.android.com/resources/tutorials/notepad/notepad-ex2.html, на Шаг 5 они выставляют значения, чтобы он мог использоваться NoteEdit.

Я хотел бы передать ссылку на NotesDbAdapter в NoteEdit, чтобы на самом деле я мог делать какие-то совершенно разные вещи.

Похоже, он не вызывает конструктор.Я попытался добавить параметр в NoteEdit onCreate, но это не похоже на это?: - (

С нетерпением жду ваших ответов, эксперты!: -D

Ответы [ 2 ]

3 голосов
/ 20 июня 2010

Положить / получить дополнительные не передаются через конструкторы, вы должны явно читать из намерения, вероятно, в методе onCreate

Первое занятие

Intent myIntent = new Intent();
myIntent.putExtra("key", "value");
startActivity(myIntent); 

Новая активность

код в onCreate

Intent myIntent = getIntent(); 
myIntent.getExtra("key");

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

Bundle e = getIntent().getExtras();
Object obj=(Object) e.getSerializable("key");
2 голосов
/ 20 июня 2010

Я согласен с мистером Кастибланко. Не пытайтесь сделать это.

Ваш Adapter содержит ссылку на основной Activity, тот, с ListView, к которому прикреплен Adapter. Если бы вы перевели ваш Adapter на новый Activity, тогда ваш новый Activity будет содержать ссылку на ваш старый Activity. Это не позволит Android уничтожить ваш старый Activity, чтобы освободить память для других приложений, поскольку ваш новый Activity будет содержать ссылку на него, предотвращая сборку мусора.

Если вам нужно совместно использовать модель данных между действиями, держите эту модель данных вне этих действий (например, база данных, Service, Application). Ваш Adapter не ваша модель данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...