Android Intent с явным обработчиком и идентификатором - PullRequest
0 голосов
/ 30 августа 2011

У меня есть ListActivity, которая должна вызывать форму редактирования, очень похоже на Блокнот . Разница в том, что я не хочу вызывать ACTION_EDIT намерение, а непосредственно класс EditorActivity, а также отправлять ему идентификатор. Прямо сейчас я могу только выяснить, как напрямую вызвать намерение

startActivity(new Intent(Intent.ACTION_EDIT,ContentUris.withAppendedId(getIntent().getData(), id)));

или отправить ID с общим запросом на редактирование

startActivity(new Intent(getBaseContext(),LocationEditorActivity.class));

Итак, как мне теперь сопоставить их?

Ответы [ 2 ]

3 голосов
/ 30 августа 2011

Делать это ...

startActivity(new Intent(Intent.ACTION_EDIT,ContentUris.withAppendedId(getIntent().getData(), id)));

... все равно, что спрашивать ОС: «эй, я хочу, чтобы вы открыли действие, которое обрабатывает URI такого типа и поддерживает действие Intent.ACTION_EDIT".

Затем выбранное действие должно заглянуть внутрь Uri, извлечь идентификатор и обработать его.Итак, если вы хотите запустить действие напрямую, вам просто нужно явно отправить идентификатор для этого действия:

Intent intent = new Intent(getBaseContext(),LocationEditorActivity.class);
intent.putExtra("the_id", id);
startActivity(intent);

Затем, внутри действия вместо того, чтобы искать идентификатор внутри данных Uri, выполучить его из дополнений:

long theId = getIntent().getExtras().getLong("the_id", -1);
2 голосов
/ 30 августа 2011

?попытаться создать намерение, как это:

Intent intent = new Intent(getApplicationContext(), LocationEditor.class);
intent.putExtra("Id", id);
startActivity(intent);

в получающей деятельности:

Intent intent = getIntent();
int id = intent.getExtras().getInt("Id");
...