Кнопка возврата не возвращается к предыдущей активности
Мое небольшое тестовое приложение представляет собой ListActivity, в котором отображаются все контакты. Когда пользователь щелкает один, он открывает действие ACTION_EDIT "people". Это отлично работает. Когда пользователь нажимает "назад" или завершает редактирование каким-либо иным способом, основной вид деятельности "Люди" начинается, а не возвращается к моей деятельности.
Почему это происходит?
Вот мой код:
public class ReadContact extends ListActivity implements OnItemClickListener
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
...
}
@Override
public void onItemClick (AdapterView<?> parent, View view, int position, long id)
{
Cursor cur = ((SimpleCursorAdapter)parent.getAdapter()).getCursor();
cur.moveToPosition (position);
String key = cur.getString (2);
System.out.println ("clicked " + key);
// make intent to edit contact
Intent intent = new Intent (Intent.ACTION_EDIT);
intent.setData (Uri.parse (ContactsContract.Contacts.CONTENT_LOOKUP_URI + "/" + key));
startActivityForResult (intent, 2);
}
@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data)
{
System.out.println ("request " + requestCode + ", result " + resultCode);
}
}
Обратите внимание, что onActivityResult никогда не вызывается. Также, пожалуйста, поймите, что я не контролирую код редактирования контактов - это часть приложения "люди", поставляемого с Android. Благодарю.
1 ответ
Я подал ошибку на Android по этому поводу. Кто-то посмотрел на это и ответил, что существует недокументированный обходной путь. Из сообщения об ошибке:
Недокументированный обходной путь - вызвать putExtra("finishActivityOnSaveCompleted", true); в намерении ACTION_EDIT.
Однако, поскольку это недокументировано, я понятия не имею, какие версии Android будут использовать его.
Я попробовал это, и это работает для версии Android, которую я использую: 4.1.2. См. Выпуск 39262 для получения дополнительной информации.