2012-09-03 15 views
6

Czy każdy może podać listę wartości requestCode, które należy przekazać wraz z startActivityForResult() i ich przeznaczeniem? Ponadto, czy możesz wyjaśnić na setResult parametry dostępne jak RESULT_OK i co jeszcze tam? Uprzejma pomoc.Typy RequestCode dla startActivityforResult

Odpowiedz

7

Po uruchomieniu działalności dla wyniku z requestCode >= 0, kod ten zostanie zwrócony onActivityResult() gdy drugi aktywności Pierwszą czynnością jest finished.You można uruchomić wiele Activity do wyniku z Activity. W każdym przypadku otrzymasz wywołanie zwrotne do metody startActivityForResult() przekazującej żądanie. W onActivityResult() możemy użyć requestCode, aby sprawdzić, dla jakiej aktywności otrzymaliśmy wywołanie zwrotne. Aby odróżnić wywołania zwrotne od Activities używamy różnych kodów żądań.

Dla np:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Intent i = new Intent(FirstActivity.this, SecondActivity.class); 
    startActivityForResult(i, 1); 
    Intent i = new Intent(FirstActivity.this, ThirdActivity.class); 
    startActivityForResult(i, 2); 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

if (requestCode == 1) { 

    if (resultCode == RESULT_OK) { 
    //Get the result from SecondActivity 
    } 

    } 
else if (requestCode == 2) { 
    if (resultCode == RESULT_OK) { 
    //Get the result from ThirdActivity 
    } 
} 
} 
2

Możesz umieścić, co chcesz w requestCode, jest tam, aby wiedzieć, jakie konkretne informacje masz zamiar powrócić po uruchomieniu Activity z określonym requestCode. Po wywołaniu Activity należy zadzwonić pod numer setResult(RESULT_OK) po przesłaniu informacji do poprzedniego Activity, aby sprawdzić, czy są to właściwe dane i wszystko poszło dobrze.

1

requestCode należy do Ciebie. Pomoże Ci to rozpoznać, który Activity skończył, w twojej metodzie onActivityResult(). Również parametry wyników są mniej lub bardziej zależne od Ciebie, o ile pracujesz tylko z własnymi Aktywnościami. Możesz myśleć o tym jako o zwracanej wartości wywoływanej aktywności do wywołania.

2

Numer requestCode w służy do przydzielania identyfikatora do żądania, dzięki czemu żądanie można zidentyfikować za pomocą tego kodu w wersji onActivityResult(). Jak gdyby ktoś napisał kodów, aby uruchomić dwie aktywności w działalności B i C, przez następujący kod

startActivityForResult(new Intent(A.this, B.class), 1); 
startActivityForResult(new Intent(A.this, C.class), 2); 

teraz w onActivityResult() można uznawane który Activity powrócił wynik.

Metoda setResult() służy do ustawienia wartości Intent w Result i resultCode. Przez resultCode mówimy onActivityResult(), że wynik jest OK, lub anulowane. w Intent ustawiamy w Result, można użyć do przekazania niektórych danych metodami intent.putExtra().

Powiązane problemy