#java #android #android-intent #message
#java #Android #android-intent #Сообщение
Вопрос:
Я немного запутался с намерением и передачей сообщений в Android. В основном, мое текущее затруднительное положение:
Пользователю отображается экран со списком животных, когда пользователь нажимает на строку, например, Тигра, информация об этом животном будет отображаться на следующем экране / действии.
Я в значительной степени позаботился о фреймворке приложения, поэтому, когда пользователь выбирает из списка animal, он попадает в Animal activity / class, но на данном этапе это всего лишь общий макет.
Как я могу сообщить приложению, что был выбран TIGER, и показать данные tiger пользователю.Мой подход до сих пор
Пользователь нажимает элемент в списке, и вызывается действие:
protected void onListItemClick(ListView l, View v, int position, long id){
Intent animalIntent = new Intent(this, Animal.class);
startActivity(animalIntent);
}
Ответ №1:
В дополнение к @PhilLello, как только вы используете Intent.setExtra(), вы можете получить значение в своем activity с помощью:
string animal;
Bundle extras = this.getIntent().getExtras();
if (extras != null) {
animal = extras.getString("animal");
}
Комментарии:
1. Спасибо!! На самом деле у меня есть еще один вопрос, как точно я могу определить, на какую строку нажал пользователь. Я имею в виду, я не буду знать, что они нажали Tiger, возможно, они нажали parrot. Делается ли это с помощью onListItemClick (int position)? Это означало бы, что я использую статический список, что так и есть, мне просто интересно, может ли быть лучший подход
2. На самом деле вы бы использовали последний аргумент: длинный идентификатор для ссылки на выбранный идентификатор строки.
Ответ №2:
Вы можете добавить данные в свой intent, поэтому перед вызовом startActivity вы можете сделать:
animalIntent.putExtra("myApp.chosenAnimal","Tiger");
Вы можете использовать другие типы данных вместо приведенной выше строки Tiger, целое число, представляющее идентификатор animals, объект Tiger и т.д.
Теперь в вашем примере класс «Animal» должен был бы быть activity , то есть activity, который загружается после обработки intent . Если Animal — это просто POJO, вам может понадобиться новое действие, чтобы показать ваше конкретное животное.
Оказавшись внутри Animal activity, вы можете проверить содержимое переданных намерений с помощью:
Intent incomingIntent = getIntent();
String selectedAnimal = incomingIntent.getStringExtra("myApp.chosenAnimal");
обратите внимание, что «MyApp.chosenAnimal» в области входящих намерений совпадает с таковым в animalIntent.
Ответ №3:
Вы можете использовать Intent.setExtra(«животное», «ТИГР») перед запуском намерения.
Надеюсь, это поможет,
Фил Лелло
Ответ №4:
Я задавал этот вопрос раньше и обнаружил, что для меня работает следующее. В activity, которому вы хотите отправить данные, укажите следующее.
Intent i = new Intent();
i.putExtra(KEY,String);
i.putExtra(KEY2,String);
Когда вы хотите получить эту информацию, выполните следующее.
Bundle extras = getIntent().getExtras();
String temp = extras.getString(KEY);
String temp2 = extras.getString(KEY2);
Надеюсь, это поможет