В моем приложении три действия: A, B и C. Я перехожу от A к B через кнопку OK, и я хочу вернуться с B на A, используя кнопку возврата по умолчанию на устройства Android. Когда я нажимаю кнопку, все приложение закрывается. Как я могу обойти эту проблему?
Я подозреваю, что вы вызываете finish()
в своей кнопке "OK" onclick listener. Не делай этого. finish()
удаляет вашу активность из стека действий.
Подробнее здесь.
зачем начинать свою деятельность с результата? когда вы нажимаете на подставку, результат устанавливается на RESULT_CANCELED, формирует активность B, поэтому он падает, если вы не обрабатываете код результата...
вы можете обрабатывать обратное, как это
private static final int NONE = -1;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
setResult(NONE, intent);
finish();
return super.onKeyDown(keyCode, event);
}
Когда вы нажмете кнопку Ok, начинайте с намерения... например
Intent int = новое намерение (контекст, B.class); startActivity (INT);
если вы не используете обратную связь.
Если используется кнопка возврата по умолчанию... , она вернется к A.
Надеюсь, что это поможет...
В моем методе onClick (в главной операции) я использую код:
Intent intent = new Intent(context, SecondActivity.class);
context.startActivityForResult(intent, SecondActivity.SECONDACTIVITY_REQUEST);
В манифесте у меня есть:
<activity android:name=".SecondActivity" android:screenOrientation="landscape" android:launchMode="standard"></activity>
Это работает для меня без каких-либо других настроек, которые я вижу. На какие события вы отвечаете?
Обратите внимание, что вы также можете вернуться к действию в коде:
super.setResult(Activity.RESULT_OK);
super.finish();
Изменить... Удостоверьтесь, что вы не проглатываете событие в событии Main Activity onKeyDown.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//your code here
//if (keyCode ==
//...
//else
return super.onKeyDown(keyCode, event);
}