Как вернуться из упражнения D в A - PullRequest
1 голос
/ 13 февраля 2012

У меня есть 4 вида деятельности

A, B, C, D

A - основная деятельность,

B, C, D - списки

я хочу сделать что-то вроде этого:

перейти от A -> B -> C -> D

от A, начать действие B, нажав на кнопку, затем запустить следующее действие C из B, выбрав пунктв ListView следующее начальное действие D путем выбора другого элемента в действии C. Последнее, когда выберите элемент в D, вернитесь к действию A и завершите задание B и C.

также пользователь должен иметь возможность вернуться, когда нетвыбор любого элемента из A <- BA <- B <- C и A <- B <- C <- D </p>

Не могли бы вы дать мне несколько советов, как это сделать:>?

С уважением, swierzy

Ответы [ 4 ]

3 голосов
/ 13 февраля 2012

Если вы выполнили одно задание, позвоните finish().Чтобы определить, вернулась ли дочерняя активность, внедрите onActivityResult.

2 голосов
/ 13 февраля 2012

Для A, B и C вы захотите вызвать startActivityForResult().Это позволяет получать уведомления о завершении запуска Activity.

От A:

Intent i = new Intent(this, B.class);
startActivityForResult(i, B_ACTIVITY);

...

@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
    if((resultCode == RESULT_OK) && (requestCode == B_ACTIVITY)) {
        // handle success
    }
}

От B (и аналогично от C)

Intent i = new Intent(this, C.class);
startActivityForResult(i, C_ACTIVITY);

...

@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
    if((resultCode == RESULT_OK) && (requestCode == C_ACTIVITY)) {
        setResult(RESULT_OK);
        finish();
    }
}

Когда вы закончите в D, позвоните setResult(RESULT_OK);, затем finish(), и все произойдет, как вы пожелаете.Кнопка «Назад» будет обработана правильно автоматически.

0 голосов
/ 13 февраля 2012

Если вы хотите перейти от D к A, используйте намерение для вызова A и установите флаг http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP для намерения (intent.setFlag ()).

Intent intent = new Intent(D.this, A.class);
intent.setFlag(FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

Для возвратаот B до A, C до B ..., используйте только onBackPressed.Метод onBackPressed завершает текущее действие, и вы автоматически возвращаетесь к действию A.Не переопределяйте метод onBackPressed!

private void onClickBackButton() {
    onBackPressed();
}

Смотрите информацию FLAG на сайте разработчиков Android: http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_BROUGHT_TO_FRONT

0 голосов
/ 13 февраля 2012

Вы можете использовать намерение и захватить кнопку возврата:

например, от B до A

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch(keyCode){
        case KeyEvent.KEYCODE_BACK:
            onBackPressed();
        }
        return super.onKeyDown(keyCode, event);
    }


    @Override
    public void onBackPressed() {
            Intent myIntent = new Intent(B.this,A.class);
            B.this.startActivity(myIntent);
    }
...