Autore Topic: Estendere Activity  (Letto 461 volte)

Offline tonno16

  • Utente storico
  • *****
  • Post: 1187
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Estendere Activity
« il: 16 Settembre 2014, 19:50:42 CEST »
0
Salve gente. Per motivi personali e anche per curiosità dovrei creare svariate activity.
Ogni activity ha una listView una list<K> e un adapter. Quindi ben 3 elementi in comune ma magari in alcune activity mi serve una lista di integer e in altre una lista di oggetti Custom

nel onCreate() dell' Activity madre ho un piccolo AlertDialog che mostra un "ciao".

ecco il codice per l' Activity B

Codice (Java): [Seleziona]
public class MyActivity2 extends MyActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

}

ecco la A

Come vedete faccio extends MyActivity (che sarebbe la A, la madre).
Posso impostare un altro layout( cosa che mi servirà), posso creare nuovi metodi.
Però quando avvio la B, l' alert viene comunque eseguito, quando invece io faccio un Override del metodo.

Evidentemente sbaglio ad applicare qualche concetto di oop

Offline ciopper90

  • Utente junior
  • **
  • Post: 106
  • Respect: +4
    • Mostra profilo
Re:Estendere Activity
« Risposta #1 il: 17 Settembre 2014, 23:03:58 CEST »
0
Vedi l'alert dialog perche richiami il metodo super.increate(..)
Che richiama i
La onCreate di mainActivity

Offline tonno16

  • Utente storico
  • *****
  • Post: 1187
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Estendere Activity
« Risposta #2 il: 18 Settembre 2014, 01:27:50 CEST »
0
Si ma ovviamente omettendo il super l' app crasha e il log dice "did noto call super.oncreate()

Ho pensato di fare un BaseActivity abstract e dichiarare l'onCreate abstract e poi estendere BaseActivity

Offline ciopper90

  • Utente junior
  • **
  • Post: 106
  • Respect: +4
    • Mostra profilo
Re:Estendere Activity
« Risposta #3 il: 18 Settembre 2014, 09:14:20 CEST »
0
La butto li magari e una cavolata atroce..e richiamare onCreate() della classe activity invece che della classe estesa??

Offline tonno16

  • Utente storico
  • *****
  • Post: 1187
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Estendere Activity
« Risposta #4 il: 18 Settembre 2014, 09:51:57 CEST »
0
Ovvero?

iClaude

  • Visitatore
Re:Estendere Activity
« Risposta #5 il: 18 Settembre 2014, 10:24:40 CEST »
0
Devi creare una classe Activity astratta che contiene ESCLUSIVAMENTE ciò che è comune alle varie Actvity che la estendono. Quindi niente AlertDialog se non serve ovunque.

Offline BlackJad

  • Utente junior
  • **
  • Post: 59
  • Respect: +6
    • Google+
    • michele-ziparo/4/825/a99/
    • blackjad82
    • Mostra profilo
    • Datawit Systems
  • Dispositivo Android:
    Samsung Galaxy S3
  • Play Store ID:
    Michele Ziparo
  • Sistema operativo:
    Windows 8.1
Re:Estendere Activity
« Risposta #6 il: 18 Settembre 2014, 23:28:24 CEST »
0
Scusa, forse non capisco bene io, però potresti spiegarmi l'utilità di estendere una activity di base, quando tu vuoi mantenere un layout comune ed impostare la listview di volta in volta in svariate altre activity?

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Estendere Activity
« Risposta #7 il: 19 Settembre 2014, 01:08:37 CEST »
0
Codice (Java): [Seleziona]
public class MyActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
          //......
          setupActivity();
    }

   protected void setupActivity(){
     //Alert
  }
}


public class MyActivity2 extends MyActivity {

    @Override
    protected void setupActivity(){
       //.....
     }
}

Meglio ancora se dichiari abstract MyActivity e il metodo setupActivity.
« Ultima modifica: 19 Settembre 2014, 01:11:55 CEST da GabMarioPower »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1187
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Estendere Activity
« Risposta #8 il: 19 Settembre 2014, 02:02:50 CEST »
0
Grazie a tutti per le risposte.

Quello che c'è in comune fra le varie activity è la presenza di una lista, una listView e un adapter.
Ho anche un metodo che fa il refresh della list view....e per refresh intendo il parsing+httprequest.

Il refresh viene eseguito con uno swipe refresh layout.
Nel caso di 3 activity quindi dovrei eseguire il parsing di 3 siti diversi. Dove magari ho una lista di oggetti di tipo articolo' oggetti di tipi Integer e oggetti di tipi auto.

Ovviemente farò uso di generici.
È scontato che posso fare 3 activity diverse a mio piacimento ma non è questo quello a cui vorrei arrivare.


Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Estendere Activity
« Risposta #9 il: 19 Settembre 2014, 07:54:40 CEST »
0
Nel caso di 3 activity quindi dovrei eseguire il parsing di 3 siti diversi. Dove magari ho una lista di oggetti di tipo articolo' oggetti di tipi Integer e oggetti di tipi auto.
È scontato che posso fare 3 activity diverse a mio piacimento ma non è questo quello a cui vorrei arrivare.

Opinione personale : è giusto isolare le parti di codice in comune, tipo quelle per le richieste di rete ed il parsing, però vincolare tra di loro le activity che poi avranno comunque listview diverse, mi sembra una bomba innescata. Tutte le volte che dovrai apportare modifiche all'activity base, dovrai tenere conto degli impatti su tutte le derivate e comunque testarle.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline BlackJad

  • Utente junior
  • **
  • Post: 59
  • Respect: +6
    • Google+
    • michele-ziparo/4/825/a99/
    • blackjad82
    • Mostra profilo
    • Datawit Systems
  • Dispositivo Android:
    Samsung Galaxy S3
  • Play Store ID:
    Michele Ziparo
  • Sistema operativo:
    Windows 8.1
Re:Estendere Activity
« Risposta #10 il: 19 Settembre 2014, 09:14:11 CEST »
0
È scontato che posso fare 3 activity diverse a mio piacimento ma non è questo quello a cui vorrei arrivare.

Beh scusa se estendi una activity, ne stai già facendo di diverse, le devi comunque dichiarare nel manifest e devi usarne una per volta, se potessi dire quali funzionalità hai bisogno di mantenere in comune, magari ci sono soluzioni diverse che ti causano meno problemi.