onActivityResult Данные о намерениях неверны - PullRequest
3 голосов
/ 29 июля 2010

Впервые я решаюсь начать startActivityForResult и столкнулся с проблемой.

Действие A (ActivityMyList) запускает Действие B (ActivityQuickList) в ожидании результата:

Intent intentLaunchQuickList = new Intent(ActivityMyList.this, ActivityQuickList.class);
startActivityForResult(intentLaunchQuickList, REQUEST_QUICKLIST);

Когда пользователь нажимает на элемент списка в Деятельности B, он возвращает «ql_id» для Деятельности A:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    QuickListItem qlItem = m_Adapter.getItem(position);
    if (qlItem != null && qlItem.getQLId() != -1) {
        Intent data = new Intent();
        data.putExtra("ql_id", Integer.toString(qlItem.getQLId()));
        if (getParent() == null) {
            setResult(Activity.RESULT_OK, data);
        }
        else {
            getParent().setResult(Activity.RESULT_OK, data);
        }
        finish();
    }
    finish();
}

Integer.toString (qlItem.getQLId ()) имеет значение "1". Это важно, потому что я не получаю "1" ...

Я переопределил обработчик onActivityResult в Деятельности A следующим образом:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_QUICKLIST) {
        if (resultCode == Activity.RESULT_OK) {
            Bundle extras = data.getExtras();
            if (extras != null) {
                int id = extras.getInt("ql_id");
            }
        }
    }
}

К сожалению, extras.getInt ("ql_id") имеет значение "0". Почему это? Должно быть "1". Я явно что-то делаю неправильно.

Спасибо за вашу помощь

1 Ответ

2 голосов
/ 29 июля 2010

Ах, неважно.Я помещаю String в связку и вытаскиваю int.

...