У меня есть два вида деятельности: ActivityA
и ActivityB
Отображение предыдущей активности на кнопку назад нажмите
Activity A
содержит три линейных макетов. Нажатие на каждый линейный макет вызывает метод showReport
, который начинается ActivityB
.
На задней кнопке нажмите ActivityB
. Я получаю результат в ActivityA
в функции onActivityResult
и пытается обновить ActivityA
.
Но проблема -
Когда я нажимаю на любой линейной компоновки, то onActivityResult
называется и мой resultCode
становится равным 0
, поэтому условие верно и Activity A
вызывается снова.
Как звонить Activity A
или как получить условие resultCode
быть 0
только если нажать кнопку назад.
Моего код ственного образца
активности A:
int REQUEST_CODE = 2;
public void showReport(View v)
{
tag = v.getTag().toString();
Intent intent = new Intent(this, ActivityB.class);
intent.putExtra("name", tag);
this.setResult(RESULT_OK, intent);
startActivityForResult(intent, REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (resultCode == 0) {
Intent in = new Intent(this, ActivityA.class);
startActivity(in);
}
}
Но значение 'RESULT_CANCELED' всегда' 0'. Его константа.Поэтому независимо от того, будете ли вы писать 'if (resultCode == 0)' или 'if (resultCode == RESULT_CANCELED)'. Проблема в том, что нажатие на любой линейный макет также дает 'resultCode' как' 0'. –
Нет, его нет. Если ActivityB был успешным, он будет возвращать Result_OK, если вы нажмете кнопку «Назад», то результатом будет Result_cancelled. http://developer.android.com/training/basics/intents/result.html – asloob
'RESULT_CANCELED' является константой, но полученный вами результат resultCode будет меняться. – asloob