Передача данных между действиями

1

У меня есть следующий код:

chart.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
    final String aux= (String) lt.getItemAtPosition(position);
        Intent myIntent = new Intent(infoList.this, tabList.class);
        startActivity(myIntent);
    }
});

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

Теги:
listview

5 ответов

3
Лучший ответ

Вот что я сделал в этой ситуации, если вы не хотите просто передавать идентификатор назад:

Я вызываю другое действие следующим образом:

            Intent intent = new Intent(myapp, CreateExerciseActivity.class);
            intent.putExtra("selected_id", workout.getId());
            startActivityForResult(intent, CREATE_ACTIVITY);

Затем я делаю

            Intent returnIntent = new Intent();
            returnIntent.putExtra("name", m.getName());
            returnIntent.putExtra("unit", m.getUnit());
            returnIntent.putExtra("quantity", m.getQuantity());
            if (getParent() == null) {
                setResult(Activity.RESULT_OK, returnIntent);
            } else {
                getParent().setResult(Activity.RESULT_OK, returnIntent);
            }
            finish();

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

Итак, вам нужно сделать startActivityForResult, чтобы он смог вернуть данные.

  • 0
    Можете ли вы показать мне несколько уроков, чтобы увидеть, как это сделать?
  • 0
    @ fegol1985 - Что ты еще ищешь?
2

Вы можете добавить некоторые данные в Intent с помощью методов putExtra(), а затем получить данные в новом Activity с помощью getExtras(). getSomething().

  • 0
    "getSomething ()" может быть, например, fetchAllData () из базы данных?
  • 0
    Нет, getSomething () - это метод класса Bundle . Но вы можете поместить ключ в пакет и получить необходимые данные из базы данных во время второго занятия.
Показать ещё 1 комментарий
1

Я думаю, вы должны использовать OnItemClickListener вместо события click, и вам нужно называть следующую операцию.

private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id)
{
    Intent intent = new Intent(this, MyInfoActivity.class);
    intent.putExtra("selected_id", getIdFor(position));
    startActivity(intent);
}
};

mHistoryView = (ListView)findViewById(R.id.history);
mHistoryView.setOnItemClickListener(mMessageClickedHandler); 
0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню