Намерение не извлечь дополнительные - PullRequest
0 голосов
/ 03 августа 2010

У меня есть этот код:

protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    Log.i(TAG, "The id of the selected note is " + id);
    Intent editNote = new Intent(this, TaskEditActivity.class);
    editNote.putExtra(TasksDBAdapter.KEY_ID, id);
    startActivityForResult(editNote, EDIT_TASK_REQUEST);
}

И этот код, который получает дополнительные ОТ РАЗЛИЧНОЙ ДЕЯТЕЛЬНОСТИ :

 if (savedInstanceState != null) {
        id = savedInstanceState.getLong(TasksDBAdapter.KEY_ID);
    }
 Log.i(TAG, "Id of note = " + id);

В первом фрагменте кода Logcat говорит: The id of the selected note is 2, но во втором фрагменте кода Logcat говорит: Id of note = 0.Что здесь произошло?Любые решения этой ОЧЕНЬ надоедливой проблемы.

Ответы [ 2 ]

4 голосов
/ 03 августа 2010

Я думаю, что вы путаете состояние, которое сохраняется, когда Activity ставится на паузу, а данные доставляются на Activity через Intent.

Вы хотите что-то вроде:

Bundle extras = getIntent().getExtras();
id = extras.getLong(TasksDBAdapter.KEY_ID);

Bundle, переданный onCreate() - это Bundle, который вы сохранили с помощью onSaveInstanceState() метод , и это не дополнительные элементы Bundle, которые вы добавили в Intent.

0 голосов
/ 03 августа 2010

Вы получаете лишнее очень неправильным способом.Замените ваш второй фрагмент кода на:

id = getIntent().getLongExtra(TasksDBAdapter.KEY_ID, 0);
Log.i(TAG, "Id of note = " + id);

Вот что происходит в этом коде: getIntent() возвращает Intent, созданное вами в первом фрагменте кода (Intent, который использовался для запуска текущегодеятельность).Затем .getLongExtra() возвращает приложенную дополнительную информацию.Если никакой дополнительной информации с этим тегом и этим типом данных (long) не найдено, возвращается 0.

savedInstanceState используется для сохранения состояния вашего приложения, когда оно закрывается системой Android из-за недостатка памятиусловия.Не путайте этих двоих.

...