2012-12-19 8 views
7

W Androidzie wiele funkcjonalności znajduje się w klasie pochodnej Activity. Gdy aktywność staje się duża (z wieloma procedurami obsługi zdarzeń itp.), Plik Java może stać się duży i bardzo zagracony.Jak podzielić działanie Androida na wiele plików?

Czy istnieje sposób na "rozbicie" pliku kodu klasy Java, np. C# ma słowo kluczowe partial?

+3

Możemy przerwać działalność w różnych klasach Możemy mieć klasy zewnętrzne Adaptora, AsyncTask i tak dalej ... – rajpara

+0

Tak więc, powiedzmy, że mam jakiś Button z funkcjonalnością, mógłbym je podklasować i wstawić podklasy 'Button 's w moim' Activity'? Korzystanie z np. obiekt 'Activity.this', aby dostać się do mojego' Activity'? –

+0

Możesz mieć własną klasę przycisków i możesz umieścić ten niestandardowy przycisk w pliku układu XML, a także poprzez kod, który możesz dodać, drugą rzeczą dla programisty kliknięcia przycisku, możesz utworzyć jedną niestandardową klasę View.onClickListner – rajpara

Odpowiedz

1

Jak zauważyli inni, nie można podzielić rzeczywistego pliku (uważam to za dobrą rzecz).

Można wyodrębnić funkcje związane z widokiem w niestandardowych widokach i fragmentach. Cała reszta (logika biznesowa, dostęp do usług sieci Web, dostęp do bazy danych itp.) Może znajdować się w klasach "pomocniczych", z których korzysta się w swojej działalności. Mimo że działania są obiektami Boga w systemie Android, nie musisz pisać wszystkiego wewnątrz rzeczywistej klasy aktywności. Powinien tylko koordynować rzeczy i implementować niezbędne wywołania zwrotne i programy obsługi zdarzeń (które technicznie mogą być również w ich własnych klasach).

+0

Oczywiście umieszczam logikę biznesową i wszystkie te inne rzeczy w ich własnych klasach.Po prostu istnieje wiele funkcji związanych z widokiem, co sprawia, że ​​'Activity' jest trochę nieporządny. Wypróbuję podklasy tych, żeby sprawdzić, czy to działa dla mnie. –

+0

Jeśli chcesz połączyć domyślne widżety, fragmenty mogą lepiej pasować. Podkatalogowanie widoków jest zwykle przydatne tylko w przypadku niestandardowych widżetów. –

+0

Szkoda, że ​​'Fragment's zostały wprowadzone na poziomie API 11, a wiele telefonów wciąż znajduje się w systemie Android 2. –

2

krótka odpowiedź? Nie.

cytat z wikipedia

kompilator Sun Microsystems Java wymaga, aby nazwa pliku źródłowego musi odpowiadać tylko klasę publiczną wewnątrz niego, podczas gdy C# pozwala wielu klas publicznych w tym samym pliku, i stawia żadnych ograniczeń w nazwie pliku . C# 2.0 i nowsze wersje umożliwiają dzielenie definicji klasy na kilka plików przy użyciu częściowego słowa kluczowego w kodzie źródłowym. W Javie klasa publiczna zawsze będzie znajdować się we własnym pliku źródłowym. W języku C# pliki kodu źródłowego i separacja jednostek logicznych nie są ze sobą ściśle powiązane.

Tak więc, podczas gdy można przerobić swój projekt i usunąć niektóre kod do klas użytkowych w celu rozłożenia kodu, nie można oddzielić kodu pojedynczej klasy między dwa pliki w języku Java.

+0

+1 dla szybka odpowiedź – MAC

+0

Wiedziałem, że :). Głównie zastanawiałem się, czy jestem jedynym, który ma ten problem. Chyba muszę użyć innego paradygmatu projektu. –

+0

Chociaż może to być denerwujące. Uważam, że jest to zamierzone. Zasadniczo zmuszając cię do przemyślenia projektu "klasy bożej". Java lubi popychać do dobrych praktyk, podczas gdy Android (initallt) wydaje się naciskać przeciwko .. yup.annoying. – Oren

0

Nie. Kody źródłowe Java nie mogą być dzielone na wiele plików.

Z http://en.wikipedia.org/wiki/Comparison_of_Java_and_C_Sharp

kompilator Sun Microsystems Java wymaga, aby nazwa pliku źródłowego musi odpowiadać tylko klasę publiczną wewnątrz niego, podczas gdy C# pozwala wielu klas publicznych w tym samym pliku, i stawia żadnych ograniczeń w nazwie pliku . C# 2.0 i nowsze wersje umożliwiają podzielenie definicji klasy na kilka plików przy użyciu częściowego słowa kluczowego w kodzie źródłowym. W Javie klasa publiczna zawsze będzie znajdować się we własnym pliku źródłowym. W języku C# pliki kodu źródłowego i separacja jednostek logicznych nie są ze sobą ściśle powiązane.

+0

To jest ** dokładnie ** ta sama odpowiedź co @Oren. –

+0

sprawdź ten link również musi ci pomóc http://stackoverflow.com/questions/1584831/separation-of-logic-and-ui –

Powiązane problemy