Android: прекращение активности из вкладки - PullRequest
0 голосов
/ 15 января 2011

У меня есть 3 класса, давайте назовем их 1, 2 и 3.

Class 1 расширяет TabActivity и организует всю вкладку, Class 2 и 3 - это две отдельные вкладки, каждая из которых содержит несколько строк текста. Я вызываю Класс 1 из другого действия, используя startActivityForResult.

Затем я добавил optionMenu в классе 2, и когда пользователь нажимает на optionMenu, выполняется следующий код:

@Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        Intent i = new Intent();
        switch(item.getItemId()) {
            case Result.NEXT_ID:
                i.putExtra(Result.PAGE_REQUEST, NEXT);
                setResult(RESULT_OK, i);
                finish();
                break;
            case Result.PREV_ID:
                i.putExtra(Result.PAGE_REQUEST, PREV);
                setResult(RESULT_OK, i);
                finish();
        }
        return super.onMenuItemSelected(featureId, item);
    }

В моем родительском классе (класс, который вызвал 1 для начала), в его функции onActivityResult я хочу получить данные из дополнений. Однако цель всегда нулевая, и я не могу понять, почему.

Когда я вызываю finish () в классе 2, вызывает ли он какую-то другую функцию в классе 1? Нужно ли как-то передавать данные о намерениях?

Вот стартовая активность для результата, Результат - Класс 1

private void getResult(String result) {
        Intent i = new Intent(this, Result.class);
        i.putExtra(RESULT, result);
        i.putExtra(PAGE, curr_start_page);
        startActivityForResult(i, 0);
    }

Я также пытался поместить методы optionmenu в Class 1, однако, когда я вызываю finish (), он ничего не делает.

Edit:

Я думаю, что я должен поместить optionsmenu в Class 1, так как я начинаю class 1 в startActivityForResult. Но как выйти из макета вкладки? вызов метода finish () в классе 1, похоже, не помогает.

Ответы [ 2 ]

1 голос
/ 15 января 2011

Я только что получил это.В методе optionsmenu в классе 2 мне нужно сделать

this.getParent().setResult(RESULT_OK, i);

, затем вызвать finish (), он работает правильно.

0 голосов
/ 15 января 2011

В классе 1 переопределите onActivityResult и реализуйте его, выполнив setResult с тем, что вы получили.

Посмотрите, работает ли это.от 2 до 1 родителя.Но когда класс 2 заканчивается, он просто отправляет свое значение в класс 1. Я не думаю, что класс 1 возвращает это значение вызывающей стороне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...