Wiele działań ma identyczne onCreateOptionsMenu, onOptionsItemSelected i onKeyDown. Kiedy wdrażam zmianę, muszę to zrobić w każdym działaniu (liczba godzin pracy *). Czy istnieje sposób na ponowne użycie kodu (na przykład zapisanie wszystkich trzech metod w jednym miejscu i odesłanie do niego w każdym działaniu)?Wiele czynności, identyczne naCreateOptionsMenu, onOptionsItemSelected i onKeyDown. Czy mogę w jakiś sposób ponownie użyć kodu?
Odpowiedz
Oczywiście, po prostu utwórz własną klasę Activity
, z której dziedziczą wszystkie twoje klasy.
Trochę tak - tworzy abstrakcyjną klasę bazową, która dziedziczy Activity
i realizuje wspólną zachowanie:
public abstract class MyBaseActivity extends Activity {
public Menu onCreateOptionsMenu(Menu menu) {
/* do common menu stuff */
}
}
następnie dokonaj poszczególne działania dziedziczą z klasy bazowej:
public class MyActivity extends MyBaseActivity {
// inherits behaviour from MyBaseActivity
// so don't need to re-implement onCreateOptionsMenu
}
Jasne, stwórz podstawową aktywność i wpisz tam swój kod.
public class MenuActivity extends Activity {
// Menu stuff goes here
}
Następnie rozszerz swoje oddzielne działania.
public class MyActivity1 extends MenuActivity { ... }
public class MyActivity2 extends MenuActivity { ... }
public class MyActivity3 extends MenuActivity { ... }
Nie mogę zaakceptować dwóch odpowiedzi jako poprawnych, więc wybieram tylko twoje. –
Nie ma problemu, napisaliśmy w tym samym czasie. Myślę, że Dave i tak dał tu lepszą (więcej szczegółów), więc przyjmij swoją odpowiedź. :) –
- 1. Jak ponownie użyć kodu z VBA
- 2. Czy mogę ponownie użyć PreparedStatement, jeśli wystąpi wyjątek przejściowy?
- 3. Podczas łączenia się z konstruktorem podstawowym, w jaki sposób mogę ponownie użyć kodu inicjalizacyjnego w przeciążeniu
- 4. Czy mogę w jakiś sposób użyć instrukcji w przełączniku, aby dodać więcej przypadków?
- 5. Czy mogę ponownie użyć pola obliczeniowego w zapytaniu SELECT?
- 6. onKeyDown i onKeyLongPress
- 7. Czy mogę w jakiś sposób użyć opcjonalnego powiązania dla wielu zmiennych w jednym wierszu w Swift?
- 8. Czy mogę ponownie użyć kolorów w programie Interface Builder?
- 9. Czy jest jakiś sposób domyślnie użyć atrybutu JavaScript?
- 10. Czy jest jakiś sposób użyć nowego DrawerLayout z ActionBarSharlock?
- 11. Jak ponownie użyć kodu w Kątomierzu/AngularJS Testowanie
- 12. OnOptionsItemSelected w działaniu wywoływane przed onOptionsItemSelected w fragmencie. W inny możliwy sposób?
- 13. Czy jest jakiś sposób mogę użyć typów wartości w x: DataType?
- 14. Wiele czynności lub pojedyncza czynność i wiele fragmentów
- 15. Czy mogę użyć operatora "i" w xsl dla każdego?
- 16. Czy możesz ponownie użyć przeniesionego std :: string?
- 17. Czy powinienem użyć kontrolek użytkownika, jeśli nie zamierzam ponownie użyć kodu?
- 18. Czy mogę w jakiś sposób zawierać i używać wielu wersji danej biblioteki .jar?
- 19. Chcę ponownie użyć MemoryStream
- 20. Jak mogę ponownie użyć kodu obsługi wyjątków dla wielu funkcji w Pythonie?
- 21. sposób sprawdzenia, czy dwie macierze są identyczne w OpenCV
- 22. Jak wykrywać wiele kluczy w zdarzeniu onkeydown w WPF?
- 23. Jak ponownie użyć kodu HTML na każdej stronie html?
- 24. ponownie użyć strażnika w Scali
- 25. Jak mogę ponownie użyć wyrażeń w instrukcjach LINQ?
- 26. Widoki ASP.NET MVC - Czy mogę użyć kodu źródłowego?
- 27. Czy mogę użyć Roslyn do kompilacji przepisywania kodu czasu?
- 28. Czy jest jakiś znany sposób suszenia JSON
- 29. Czy można bezpiecznie przechowywać wystąpienie wyjątku i ponownie go użyć?
- 30. Czynności synchroniczne i asynchroniczne
Oczywiście, dziękuję! Obie odpowiedzi są poprawne i napisane dokładnie w tym momencie, więc zamierzam zatwierdzić twoją odpowiedź jako właściwą (mniej reputacji niż @alextsc) i odpowiedzieć alextsc w górę głosowania. –