У меня есть ListActivity, который должен вызывать форму редактирования, как в учебнике по блокноте а>. Разница в том, что я хочу вызывать не намерение ACTION_EDIT
, а напрямую класс EditorActivity, а также отправлять ему идентификатор. Прямо сейчас я могу понять, как напрямую вызвать намерение
startActivity(new Intent(Intent.ACTION_EDIT,ContentUris.withAppendedId(getIntent().getData(), id)));
Или отправить ID с общим запросом на редактирование
startActivity(new Intent(getBaseContext(),LocationEditorActivity.class));
Итак, как мне теперь сопоставить их вместе?
2 ответа
? попробуйте построить такое намерение:
Intent intent = new Intent(getApplicationContext(), LocationEditor.class);
intent.putExtra("Id", id);
startActivity(intent);
В действии получения:
Intent intent = getIntent();
int id = intent.getExtras().getInt("Id");
Делая это...
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);
Похожие вопросы
Новые вопросы
android
Android - это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфоны, планшеты, автомобили, телевизоры, одежда, стекло, IoT). Для тем, связанных с Android, используйте специальные теги Android, такие как android-intent, android-activity, android-адаптер и т. Д. Для вопросов, не связанных с разработкой или программированием, но связанных с платформой Android, используйте эту ссылку: https: // android.stackexchange.com .