Я получил сложную проблему, связанную с ListView и некоторые Intents на Android:прокрутки ListView на Намерение
У меня есть ListActivity
, который содержит много элементов. Из другого действия, позвольте ему позвонить CallingActivity
, я хочу запустить этот ListActivity
и перейти к определенному элементу. В ListActivity
можно запустить несколько других Activites, позвоните по телефонам AnotherActivity
.
Моей текущей реализацией является сохранение элемента, к которому ListActivity следует спланировать в намерении, а затем использовать следующий код в методе onStart()
.
if (getIntent().getExtras() != null && getIntent().getExtras().containsKey(EXTRA_EVENTNR)) {
int p = getIntent().getExtras().getInt(EXTRA_EVENTNR);
getListView().clearFocus();
getListView().post(new Runnable() {
@Override
public void run() {
getListView().setSelection(p);
}
});
}
Это решение имеет огромный недостаток:
Пусть следующий вызов в последовательность:
CallingActivity
запускаетListActivity
Умышленное[EVENTNR=123]
ListActivity
recieves намерение и свитки в правильном положении ,- Пользователь продолжает читать и прокручивается дальше.
AnotherActivity
запускается изListActivity
- Пользователь нажимает на кнопку Back-
- Старое умысел (от 1.) по-прежнему присутствует и получает передается снова в
onStart
вListActivity
. ListActivity
прокручивается той же позиции снова (как и в 2.)- Scrolling Пользователя из 3. утрачивается
Я думаю, что Намерение неправильное решение для переноса scroll- Информация. Намерения - это больше для содержания деятельности, а не для ее отображения.
Есть ли еще одно решение для передачи информации прокрутки, которая применяется только один раз? Я что-то пропустил?
Возможно использование BroadcastReceivers: http://stackoverflow.com/questions/2282435/inform-activity-from-a-broadcastreceiver-only-if-it-is-in-the-foreground – Moss