Отправка намерения не получена

Итак, я пытаюсь запустить новое действие после выбора элемента в списке... довольно просто, основываясь на том, что я прочитал. Я также пытаюсь отправить значение в дополнительных функциях. Итак, я могу выбрать элемент в списке, и начнется новое действие, установлены дополнительные функции, но значение в дополнительных функциях пусто. Я заметил, что идентификатор намерения для нового действия не совпадает с идентификатором из 1-го действия. Не знаю, положено или нет.

Из действия 1:

public void onItemClick(AdapterView<?> parent, View view,
              int position, long id) {
                  Intent displayIntent = new Intent(getApplicationContext(), DisplayActivity.class);
              int index  = _names.indexOf(((TextView) view).getText());
              displayIntent.putExtra("ID_TAG", ids.get(index));
              startActivity(displayIntent);
          }

В Activity2 (DisplayActivity)

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle extras = getIntent().getExtras(); 
        _hiveIndex = extras.getLong("ID_TAG");
}

Любые идеи, почему я не получу ценность? mMap под дополнительными функциями настроен на хэш-карту раньше в 1-м намерении, но имеет значение null в Activity2.


person Dman25    schedule 02.07.2011    source источник
comment
Добро пожаловать в Stackoverflow. Чтобы помочь пользователям прочитать ваш пост, поместите образцы кода внутри блоков кода.   -  person Mike    schedule 02.07.2011


Ответы (3)


displayIntent.putExtra("ID_TAG", ids.get(index)) Activity1 не использует объект Bundle, чтобы поместить объект Bundle, вам нужно использовать метод putExtras(Bundle bundle) вместо него. Поскольку вы пытаетесь получить объект Bundle в Деятельность2. Вы передаете объект, отличный от объекта Bundle, в методе putExtra Activity1, но вы пытаетесь получить объект Bundle в Activity2, поэтому вы ничего не получаете. displayIntent.putExtra("ID_TAG", ids.get(index)); замените на displayIntent.putExtras(ваш объект пакета);

Или вы можете использовать метод getIntExtra(String name, int defaultValue).

person sunriser    schedule 02.07.2011
comment
Так что это сработало (спасибо, кстати). Я думаю, что немного перепутал это и этот заголовок [ссылка]stackoverflow.com/questions/6100570/ - person Dman25; 02.07.2011

В Activity1 вы храните целое число. В Activity2 вы пытаетесь получить Long. Вам нужно либо получитьInteger в Activity2, либо сохранить Long в Activity1. Понимать?

person Spidy    schedule 02.07.2011
comment
putExtra может принимать любой из примитивных типов, поэтому я не думаю, что это имеет значение. Кроме того, я изначально использовал getInt, но у меня была такая же проблема. У меня останавливается отладчик еще до того, как я выполню getIntent, и проблема уже существует в комплекте. - person Dman25; 02.07.2011

как насчет этого?

в DisplayActivity,

используйте 1_

person 이수홍    schedule 05.04.2013