Намерение передачи сообщений путаница - PullRequest
0 голосов
/ 07 апреля 2011

Я немного запутался с намерением и передачей сообщений в android. В основном мое текущее затруднительное положение:

Пользователь показывает экран со списком животных, когда пользователь нажимает на строку, например, Тигр, информациюоб этом животном будет отображаться на следующем экране / занятии.

У меня есть структура, в которой позаботились приложения, поэтому, когда пользователь выбирает из списка животных, он переносится в занятие / класс животных, нона данном этапе это просто общий макет.

Как я могу сообщить приложению, что был выбран TIGER, и показать пользователю данные тигра. Мой подход пока

Пользователь щелкает элемент в списке, и действие называется:

protected void onListItemClick(ListView l, View v, int position, long id){
    Intent animalIntent = new Intent(this, Animal.class);
    startActivity(animalIntent);
}

Ответы [ 4 ]

1 голос
/ 07 апреля 2011

Чтобы расширить @PhilLello, как только вы используете Intent.setExtra (), вы можете получить значение в вашей активности с помощью:

string animal;
Bundle extras = this.getIntent().getExtras();
if (extras != null) {
    animal = extras.getString("animal");
}
1 голос
/ 07 апреля 2011

Вы можете добавить данные к своему намерению, поэтому перед вызовом startActivity вы можете сделать:

animalIntent.putExtra("myApp.chosenAnimal","Tiger");

Вы можете использовать различные типы данных вместо приведенной выше строки тигра, целого числа, представляющего идентификатор животного, объекта тигра и т. Д.

Теперь в вашем примере класс «Animal» должен быть действием, то есть действием, которое загружается после обработки намерения. Если Animal - просто POJO, вам может потребоваться новое действие, чтобы показать вашего конкретного животного.

Находясь в игре Animal, вы можете проверить содержимое переданных Интентов с помощью:

Intent incomingIntent = getIntent();
String selectedAnimal = incomingIntent.getStringExtra("myApp.chosenAnimal");

обратите внимание, что «myApp.chosenAnimal» во входящей области намерений совпадает с «animalIntent».

0 голосов
/ 07 апреля 2011

Я задавал этот вопрос раньше и нашел следующее, чтобы работать для меня.В операции, для которой вы хотите отправить данные, укажите следующее.

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);

Надеюсь, это поможет

0 голосов
/ 07 апреля 2011

Вы можете использовать Intent.setExtra ("animal", "TIGER") до запуска Intent.

Надеюсь, это поможет,

Фил Лелло

...