Czyli np. w activity button wywołuje akcję -> ta odpala kod jakiejś inne klasy która wykonuje obliczenia i następnie zwraca (najlepiej za pomocą jakiegoś callbacka, a jeżeli chcesz być fancy i umisz to RxJavy) informację do activity tak żeby poinformować usera.
Jeśli pozwolisz pociągnę trochę dyskusję na temat fragmentu który napisałeś. Sorki Panowie że tak drążę temat ale chcę się nauczyć pisać czytelny kod. To co robię obecnie mi nie wystarcza i postawiłem sobie to za cel. Muszę to zrozumieć i będę drążył ile się da. Pisałem różne proste projekty i wszystko sprowadzało się do użycia jednej, góra dwóch, trzech klas które miały milion linii kodu i dostawałem szału jak mi przyszło coś tam znaleźć. Chcę z tym skończyć raz na zawsze. Ale do rzeczy. Odnośnie tego co napisałeś, chciałbym posłużyć się konkretnym przykładem. Mam klasę MainActivity a w niej przycisk, wygląda to tak:
...
public class main extends AppCompatActivity {
...
Button undoButton;
...
protected void onCreate(Bundle savedInstanceState) {
...
undoButton = (Button) findViewById(R.id.undo);
...
}
}
Mniej więcej tak to wygląda. Pod tym przyciskiem wykonywanych jest szereg obliczeń, oto dokładnie co się pod nim dzieje (zmienne które widać w kodzie to jakieś buttony lub pola typu textView, nie wklejam inicjalizacji każdego z pól):
undoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Cursor undo = matchDb.undo(count_round - 1);
if (undo.getCount() > 0) {
count = undo.getInt(0);
playerName1.setText(undo.getString(1));
total1After.setText(undo.getString(3));
score1 = undo.getString(4);
coins1.setText(undo.getString(5));
queen1.setChecked(false);
if (undo.getInt(6) == 1) {
queen1.setChecked(true);
} else {
queen1.setChecked(false);
}
if (undo.getInt(7) == 1) {
break1.setChecked(true);
} else {
break1.setChecked(false);
}
playerName2.setText(undo.getString(8));
total2After.setText(undo.getString(10));
score2 = undo.getString(11);
coins2.setText(undo.getString(12));
queen2.setChecked(false);
if (undo.getInt(13) == 1) {
queen2.setChecked(true);
} else {
queen2.setChecked(false);
}
if (undo.getInt(14) == 1) {
break2.setChecked(true);
} else {
break2.setChecked(false);
}
}
if (count == 1) {
undoButton.setVisibility(View.INVISIBLE);
}
}
});
I teraz rozumiem że aby to było prawidłowo, powinienem z tego wszystkiego utworzyć osobną klasę a następnie po wciśnięciu przycisku w MainActivity, wywołać ją? Tylko teraz pytanie, ponieważ brak mi doświadczenia w budowaniu aplikacji w taki sposób (do tej pory wszystko co mogłem wciskałem w jedną klasę co jest olbrzymim błędem i chcę z tym skończyć) w jaki sposób prawidłowo przekazać do tej klasy wszystkie parametry? Tym bardziej że definicje zmiennych przycisków mam w klasie MainActivity więc w klasie która będzie odpowiadała za ten przycisk muszę się jakoś do nich dostać a następnie przekazać to co tam wpiszę do klasy głównej czyli wciskam przycisk undo, uruchamiam zawartość klasy, powiedzmy też nazwę ją Undo, wykonują się te wszystkie obliczenia bo czym wynik zostaje zwrócony do MainActivity i wyświetlony użytkownikowi. Czy ma ktoś z Was jakiś króciutki przykład który by mi to zobrazował?