Autore Topic: Consiglio su come impostare le activity  (Letto 1421 volte)

Offline tuttoilmondo

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire Z
  • Sistema operativo:
    Mac OS X 10.7
Consiglio su come impostare le activity
« il: 06 Gennaio 2012, 15:52:46 CET »
0
Ciao a tutti, ho sul market android l'applicazione PadovaWebCam realizzata alcuni mesi fà con appinventor. Adesso che appinventor è chiuso, ho trovato la forza di dedicarmi alla programmazione vera con Eclipse. Ringrazio comunque Appinventor che con risultati veloci, mi ha dato la forza di iniziare.

Padova WebCam è un'applicazione semplice, un messaggio iniziale che avverte che è necessario un collegamento ad internet, una home page con alcuni bottoni (uno per webcam) e poi un schermata che mostra la webcam. Semplice, efficace e di successo con diverse centinaia di download.

Adesso voglio rifarlo con Eclipse per migliorarlo (con appinventor avevo raggiunto il massimo possibile), vorrie però un cosiglio.

L'idea iniziale era quella di un main activity contenente un allert iniziale per il collegamento ad interent, il layout dei bottoni e un options menù, poi una o tante activity secondarie per la visualizzazione delle WebCam.

Nel codice della classe java principale ho inseriro i bottoni seguiti da l'allert Dialog e da un options menù. Nella classe secondaria la webcam. Iniziano qui i problemi, quando parte l'app, prima di visualizzare l'allert dialog si vedeno i bottoni, premo il bottone e passa alla schermata della actvity secondaria, quando da questa torna alla activity main parte l'allert dialog. Questo è abbastanza normale visto che il codice viene letto dall'alto verso il basso e prima dell'allert dialog ci sono i bottoni. Quindi questa stada non va bene, anche se mettessi prima l'allert e poi i bottoni, al primo avvio il problema si risolve, quando però passo dalla activity secondaria alla principale, l'allert si ripresenterebbe inutilmente (deve esserci invece solo all'avvio dell'app). Ho pensato quindi di creare un'activity principale solo per l'allert, seguita da un activity per il layout dei bottoni e da altrettante activity secondarie per la visualizzazione delle webcam. Vi sembra la strada corretta o nella mia ignoranza sto trascurando qualcosa ??

HO comunque già provato a seguire questa strada, ho creato l'activity main con dentro solo l'allert, poi una secondaria con il codice dei bottoni e dell'options menù, un'altra secondaria con la webcam. Ho però un problema, nell'activity main il cui codice è il sottostante:

Codice (Java): [Seleziona]
public class Allert extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        //Allert Dialog iniziale
        AlertDialog.Builder miaAlert = new AlertDialog.Builder(this);
        miaAlert.setTitle("Attenzione");
        miaAlert.setMessage("Attenzione questa applicazione per funzionare ha bisogno di un collegamento ad internet. Se non hai un abbonamento che ti permette di navigare ad un costo per te accetabile, non usare questa applicazione. Questa applicazione usa immagini e WebCam prese da altri siti internet. Immagini e video sono dei rispettivi proprietari. Attenzione le WebCam non sono sempre attive. Scegli Ok per caricare l'applicazione o Annulla per chiuderla.");
       
        miaAlert.setCancelable(false);
        miaAlert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int id) {
                  //dialog.dismiss();
                  Intent intent = new Intent(this, Padova_WebCamActivity.class);
              startActivity(intent);
          }
        });
               
        miaAlert.setNegativeButton("Annulla", new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int id) {
                  finish();            
          }
        });
        AlertDialog alert = miaAlert.create();
        alert.show();}}
        //fine allert dialog iniziale

Alla riga
Intent intent = new Intent(this, Padova_WebCamActivity.class);

ho l'errore:
The constructor Intent(new DialogInterface.OnClickListener(){}, Class<Padova_WebCamActivity>) is undefined

Sapete da cosa dipende ?

Ho scritto tanto, forse troppo, ci vuole un erore per leggere tutto e rispondere.

Grazie

Paolo
Le mie App sul market Android, Apple e Blackbarry:
Bacchiglione, Colorare, Debito Pubblico, Milano WebCam, Padova WebCam, Palermo WebCam, Venezia WebCam
Android Market
BlackBerry Store

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:Consiglio su come impostare le activity
« Risposta #1 il: 06 Gennaio 2012, 16:58:45 CET »
+1
Prima di tutto una forse-buona notizia per te: AppInventor ha chiuso, ma è stato donato al MIT, che ne continuerà sviluppo e supporto (con un po' di ritardo però). Vedi qua: FAQ for App Inventor Transition to MIT | App Inventor Edu

Riguardo all'errore specifico, la riga di codice new Intent(this funzionerebbe se fosse nell'activity, ma si trova invece in una Dialog, infatti l'errore ti segnala che il this usato nell'ambito (scope) della dialog non va bene per gli Intent. Puoi spostare le due righe di codice in una funzione dell'activity e richiamarla dall'onclick, oppure dovrebbe andar bene lasciare tutto così e scrivere Intent intent = new Intent(Allert.this, Padova_WebCamActivity.class);

NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline tuttoilmondo

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire Z
  • Sistema operativo:
    Mac OS X 10.7
Re:Consiglio su come impostare le activity
« Risposta #2 il: 06 Gennaio 2012, 17:23:59 CET »
0
Dovrebbe andar bene lasciare tutto così e scrivere Intent intent = new Intent(Allert.this, Padova_WebCamActivity.class);

Si questo risolve il problema, adesso funziona. Putroppo sono un autodidatta e pecco nelle basi, ho ancora tanti dubbi sulle strutture.
Concordi quindi nel fare tre activity ? Una per l'allert, una per il layout bottoni e una per ogni visione di una webcam ?

Per appinventor sapevo che era stata trasferita al MIT, ma non credo che tornerò ad usarlo, troppo limitato, credo sia meglio investire del tempo per eclipse.
Magari ci vorrà molto più tempo per ottenere dei risultati ma ne vale la pena.

Mi consigli dei buoni libri per farmi delle buone basi ?

Grazie
Le mie App sul market Android, Apple e Blackbarry:
Bacchiglione, Colorare, Debito Pubblico, Milano WebCam, Padova WebCam, Palermo WebCam, Venezia WebCam
Android Market
BlackBerry Store

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:Consiglio su come impostare le activity
« Risposta #3 il: 06 Gennaio 2012, 19:42:02 CET »
0
Si questo risolve il problema, adesso funziona. Putroppo sono un autodidatta e pecco nelle basi, ho ancora tanti dubbi sulle strutture.
Concordi quindi nel fare tre activity ? Una per l'allert, una per il layout bottoni e una per ogni visione di una webcam ?

Si può fare anche con due, salvandosi lo stato di "avviso già mostrato" e in altri modi, ma anche con tre activity va più che bene. Non ti mancherà certo l'occasione di provare altre soluzioni in futuro.

Mi consigli dei buoni libri per farmi delle buone basi ?

Se vuoi un libro free, quello di punto informatico dicono sia molto buono :
   eBook Android Programming


Un libro da libreria che consiglierei è quello del Carli (seconda edizioni di uscita imminente).

E comunque niente rimpiazza l'esperienza di innumerevoli esperimenti con i tutorial che trovi su questo forum e in rete.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store