Teraz używam liczb losowych do kodów żądań. Tak więc za każdym razem, gdy dodaję nową aktywność do startActivityForResult, muszę sprawdzić wszystkie inne takie działania, aby uniknąć kolizji. Czy mogą istnieć jakieś praktyki definiowania wartości, których nie można kolidować z projektem? Co myślisz?Czy są jakieś zalecenia dotyczące wartości kodów żądań w systemie Android?
Odpowiedz
Jeśli nadal musisz sprawdzić wynik działania i podoba Ci się wizualnie wypolerowane struktury proszę sprawdzić tę metodę.
zadeklarować klasę wewnętrzną wewnątrz klasy działalności:
class RequestCode {
static final int IMPORT = 100;
static final int WRITE_PERMISSION = 101;
}
użyć kodu przy uruchamianiu działalności:
startActivityForResult(intent, RequestCode.IMPORT);
Sprawdź rezultat:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RequestCode.IMPORT && resultCode == RESULT_OK) {
//...
}
}
Zwiększanie liczby gwarantuje brak kolizji (do momentu zawinięcia). Naprawdę nie powinno się dziać, chyba że użyjesz ich dużo.
Możesz dodać klasę do projektu, która daje Ci numer. Na przykład
public class GlobalStuff {
private static final AtomicInteger seed = new AtomicInteger();
public static int getFreshInt() {
return seed.incrementAndGet();
}
}
Teraz w kodzie, gdy trzeba użyć numeru zamiast
public void doSomething() {
startActivityForResult(intentA, 342);
}
zrobić jak
private static final int REQUEST_CODE = GlobalStuff.getFreshInt();
public void doSomething() {
startActivityForResult(intentA, REQUEST_CODE);
}
i jesteś bezpieczny, że nie używasz ten sam numer dwa razy. Przynajmniej podczas gdy kod działa w tym samym procesie.
Jedynym problemem jest to, że nie można używać tych numerów w switch
oświadczenia (jak w case REQUEST_CODE:
), ponieważ przełącznik musi numery, które są znane w czasie kompilacji
Możesz go użyć w instrukcji switch przy pomocy globalnej mapy? – creitve
To podejście działa świetnie, dopóki biblioteka stron trzecich nie zdecyduje się zrobić czegoś podobnego. –
Właściwie nie trzeba sprawdzić wszystkie Działania i to nie ma większego znaczenia, jeśli masz te same wartości w różnych Działaniach.
Ideą kodów zgłoszeń jest to, że w swojej Działalności X w onActivityResult()
można rozróżnić wyniki różnych próśb rozpoczętych pod numerem startActivityForResult()
.
Więc jeśli masz 3 różne startActivityForResult()
połączeń w swojej działalności, musisz 3 różne kody żądania, aby być w stanie ich odróżnić w onActivityResult()
- tak można powiedzieć, który wynik należący do którego rozpocząć . Ale jeśli masz inne działanie Y, gdy robisz coś podobnego, to nie ma znaczenia, kiedy kody zgłoszeń są takie same jak w Aktywności X.
- 1. Zalecenia dotyczące kreślenia wykresu
- 2. Zalecenia dotyczące Java + OpenPGP?
- 3. Zalecenia dotyczące nauki Perl?
- 4. Czy są jakieś inne czujniki w systemie Android?
- 5. Czy są jakieś ograniczenia dotyczące używania "/ proc/mounts" w Androidzie
- 6. com.sun.faces.ClientStateSavingPassword - zalecenia dotyczące rzeczywistego hasła?
- 7. . Zalecenia dotyczące magistrali usług .net?
- 8. Czy w RDD są jakieś działania dotyczące zamówienia?
- 9. Zalecenia dotyczące schematu schematu MongoDB
- 10. Czy są jakieś wartości w tym SQLite w VCS
- 11. Zalecenia dotyczące komponentu wykreślania (wykresu)?
- 12. Zalecenia dotyczące struktury folderów projektów
- 13. Czy istnieją jakieś zalecenia lub konwencje dotyczące stylów do formatowania złożonej logiki binarnej?
- 14. Czy są jakieś dane dotyczące prędkości dysków lokalnych Azure VM?
- 15. Zalecenia dotyczące dobrego odniesienia vi?
- 16. Czy są jakieś konwencje dotyczące pisania komentarzy POD dla Perla?
- 17. Zalecenia dotyczące biblioteki kompresji .NET
- 18. Zalecenia dotyczące taniego urządzenia szeregowego
- 19. Zalecenia dotyczące rozwijania dokumentów Sweave
- 20. Samouczki dotyczące używania hibernacji w systemie Android?
- 21. Czy są jakieś testy porównawcze dotyczące J2Mepolish konwertowania aplikacji J2ME na system Android?
- 22. Jakieś wskazówki dotyczące używania Ropevim? Czy to biblioteka użyteczna?
- 23. Czy są tam jakieś narzędzia kodu DRYer?
- 24. Solr fasetowane zalecenia dotyczące skuteczności wyszukiwania
- 25. Czy są jakieś zastrzeżenia dotyczące używania Objectify z Google Cloud Endpoints w Java Engine App Engine?
- 26. Czy są jakieś .NET ESB?
- 27. Wskazówki dotyczące prywatnego nazywania pól Android są w porządku?
- 28. Zalecenia dotyczące formantu przeglądarki Hex dla Windows.Forms?
- 29. Czy są jakieś testy porównawcze pokazujące, ile żądań komet na sekundę może obsłużyć Node.js 0.6.8?
- 30. Czy są jakieś instrukcje dotyczące implementacji JavaScriptModule w trybie reakcji natywnej?
wystarczy użyć liczb losowych (wygenerowany podczas kompilacji) i nigdy nie miał problemów - ale jest to dobre pytanie. – Booger