Как запустить активность для результата из активности в групповой активности на вкладках?

Я разрабатываю приложение, в котором я использую несколько Activity Under Tab Activity. Я использую этот учебник.

Я хочу получить результат от следующего Activity. Как мне это сделать. Я не могу найти его. Я прочитал два или три примера, таких как this и это. Но я не могу узнать, как я могу получить результат. я тоже пробовал

    View view = getLocalActivityManager().startActivityForResult("Search", 
new Intent(this, WhatMenu.class).
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();    
But it only Supports `startActivity()`

. Любая помощь будет ценной.
Заранее спасибо


person Nitin    schedule 11.04.2012    source источник
comment
Любые предложения будут оценены   -  person Nitin    schedule 11.04.2012
comment
не используйте ActivityGroup, он устарел, лучше используйте Fragment.   -  person Lalit Poptani    schedule 11.04.2012
comment
@ Лалит Поптани, не могли бы вы дать мне простой пример, как я могу использовать фрагменты.   -  person Nitin    schedule 11.04.2012
comment
у вас наверняка есть этот - Вкладки фрагментов   -  person Lalit Poptani    schedule 11.04.2012


Ответы (3)


Я решил это через ViewFlipper Спасибо всем за помощь.

person Nitin    schedule 13.05.2012

Вам также необходимо передать код запроса для использования startActivityForResult(). Если вы не знаете, что это такое, просто введите 0.
Синтаксис для startActivity() и startActivityForResult() отличается.

person noob    schedule 11.04.2012
comment
сэр, я пробовал, но нет метода getLocalActivityManager().startActivityForResult(i,29); если я попробую это из группы Activity, он скроет вкладку, которую я не хочу - person Nitin; 11.04.2012
comment
ааа... нет метода для результатов в LocalActivityManager. Могу я узнать цель, чтобы мы могли придумать любую альтернативу. - person noob; 11.04.2012
comment
Сэр, я просто хочу получить некоторые данные от следующего действия к предыдущему и уведомить список; - person Nitin; 11.04.2012
comment
Чтобы получить данные из следующего действия в предыдущее действие, вы можете передать значения, используя общие настройки или статическую переменную, хотя последнее не рекомендуется. - person noob; 11.04.2012
comment
Но когда я могу уведомить, потому что при возобновлении() тоже не работает. - person Nitin; 11.04.2012
comment
Одной из альтернатив может быть использование потока, который проверяет, обновлены ли значения в sharedpreferance или нет. Вы можете запустить его после startActivity(). Хотя для этого должен быть какой-то чистый подход. Обновлю, если найду. - person noob; 11.04.2012

Упражнение 1
Создайте переменную класса для справки.

private final int REQUEST_CODE = 0;

...
//Somewhere in your code you have to call startActivityForResult
Intent intent = new Intent(Activity1.this, Activity2.class);
startActivityForResult(intent);


Занятие 2

Перед завершением Activity2 вы должны установить для результата значение OK и поместить данные, которые вы хотите вернуть, в Activity1, например.

Intent data = new Intent();
data.putExtra("name", "Mark");
data.putExtra("number", 1);
data.putExtra("areYouHappy", true);

setResult(RESULT_OK, data);
finish(); //closes Activity2 and goes back to Activity1


Теперь вернитесь к Activity1, вы должны переопределить метод onActivityResult и ПОЛУЧИТЬ значения из Activity2.
Вы делаете это, сначала проверяя, в порядке ли результат Activity2, а затем проверяя ссылку REQUEST_CODE, которую вы передали. Так как ранее мы создали private final int REQUEST_CODE = 0, то мы проверяем, равен ли requestCode переменной REQUEST_CODE. Если это так, извлеките данные из действия 2.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode==RESULT_OK) {
        if(requestCode==REQUEST_CODE) {
            if(data.getExtras()!=null) {
                String name = data.getStringExtra("name");
                int number = data.getIntExtra("number",0); //2nd parameter is the default value in case "number" does not exist 
                boolean areYouHappy = data.getBooleanExtra("areYouHappy", false); //2nd parameter is the default value in case "areYouHappy" does not exist
            }
        }
    }
}
person Mark Pazon    schedule 11.04.2012
comment
В Java нет глобальных переменных, а использование private и final делает его менее доступным, а не глобальным. Вы имеете в виду переменную класса или статическую переменную? - person noob; 11.04.2012