2012-01-05 12 views
6

Sono un principiante in Android.Sviluppo del puzzle di layout in Android

Desidero sviluppare un'applicazione in cui è possibile modificare le schermate in base al pulsante selezionato. L'applicazione potrebbe finire con oltre 20 schermi con pulsanti o modulo di iscrizione. Da 1 schermata ho avuto la possibilità di cambiare lo schermo su un altro schermo. Ho pensato a FrameLayout dove posso cambiare i bambini.

Non riesco ad avviare. Come se avessi creato un'attività. Ogni mio schermo dovrebbe superare la classe in modo da poterlo aggiungere al layout? Come faccio a rendere visibile la mia prima schermata all'avvio.

Queste sembrano tutte domande semplici e sciocche, ma in realtà non riesco a ottenere un punto di partenza per lo stesso. Qualsiasi aiuto è riconoscente per aiutarmi a raggiungere il mio obiettivo.

aggiornamento:

@Ghost, dalla vostra soluzione 1 domanda più arised nella mia mente. Per gli schermi in cui devo solo mostrare i pulsanti in formato specifico, ho aggiunto un GridView e un ButtonAdapter con l'aiuto di this site.

Se aggiungo clickListener solo in ButtonAdapter, come posso passare i parametri a setIntent (FooFooActivity.this ....) ????? Ho il Conext in ButtonAdapter - Posso inserirlo a FooFooActivity e su cui lavoro. Posso dare ifs in ButtonAdapter in onclick() per andare alla schermata corretta. Ma il setIntent cna funziona come sto dicendo o qualcosa del genere. Se può funzionare, quindi per molte schermate la mia singola GridView e la singola classe ButtonAdapter possono fare tutto il lavoro.

NUOVI updations sulle sperimentazioni:

@Ghost, ho provato e ha scoperto che quanto sopra setIntent (FooFooActivity.this ....) in ButtonAdapter doesnot lavoro - come in ButtonAdapter è solito trovare spazio per FooFooActivity. Questo.

  • Nella mia FooFooActivity, non posso impostare onclikcListeners per i pulsanti aggiunti tramite ButtonAdapter. Ho provato con gridview.getChild (i), ma non è impostato in alcun modo.
  • Ho anche realizzato un altro xml linearlayout (buttonspage.xml) con 6 pulsanti e un DataActivity che lo utilizza. Ciò funziona perfettamente e sul pulsante clic mostra anche FooFooActivity.
  • Per utilizzare lo stesso layout buttonspage.xml in più attività, ho impostato il contenuto di FooFooActivity come pagina dei pulsanti e impostato gli ascoltatori dei clic sui pulsanti. Per il pulsante 1, ho impostato di uscire dall'applicazione e per l'altro pulsante per mostrare DataActivity.

  • Quindi con questo ho ottenuto 2 attività, FooFoo che mostra DataActivity/Exit & DataActivity che ritorna a FooFoo. Il suo ciclo che inizia con & termina con FoofooActivity. Se faccio clic su "Esci" all'inizio, si chiude. Ma se faccio clic su "Esci" dopo aver visualizzato DataActivity, non si chiude e mostra solo DataActivity. È che non posso usare lo stesso layout in più attività ?? O posso sbagliare da qualche parte (ne dubito)? Lo stesso layout di pagina dei pulsanti che dovevo usare in 10-12 pagine tranne che con testo diverso su pulsante ed eventi. Così stavo pensando per Scrivi una volta Più orari. Ho anche avuto modo di cambiare gli stili dei pulsanti in modo dinamico su tutti questi pulsanti di pagine.

Grazie

risposta

12

Per quanto riguarda la tua prima schermata è interessato, dipende l'attività, e funziona direttamente quando si esegue il progetto. Ad esempio, se il tuo progetto ha il nome di FooFoo, durante la compilazione/creazione del tuo progetto Android, Android stesso nomina la prima classe come FooFooActivity (ad esempio, se hai permesso a Android di creare un'attività al di fuori di esso) . Ovviamente, è possibile rinominare lo e poi lì e lì. Quindi, una volta compilata l'interfaccia utente nel file main.xml predefinito e tornare al file java FooFooActivity, c'è una riga specifica all'interno del metodo onCreate. Quella linea è setContentView(R.layout.main); Questa linea imposta il vista dei contenuti presente all'interno che main.xml file. Quando si esegue il programma e all'avvio dell'emulatore, l'emulatore presenta la vista del proprio main.xml se il progetto non contiene alcuna compilazione o errori di esecuzione.

Ora, arrivando ai tuoi 20+ layout: puoi averli tutti nella cartella di layout. Assegnare almeno uno button in ogni schermata che porta ad alcuni schermi dire "XYZ" e assumiamo che il nome della classe sia "ABC". Supponiamo anche che la tua classe FooFooActivity ti porti in questa classe ABC. I seguenti passaggi ti spiegheranno come eseguire la parte di navigazione.

I. All'interno del metodo onCreate della classe FooFooActivity, si dispone già dello setContentView. Ora, dopo che la linea, aggiungere le seguenti righe:

Button button = (Button)findViewById(R.id.button1); 
    button.setOnClickListener(new View.OnClickListener() 
      { 
       public void onClick(View v) 
       { 
        Intent intent = new Intent(FooFooActivity.this, ABC.class); 
        startActivity(intent); 
       } 
      }); 

Con Passing an Intent si può guidare da soli/l'utente alla schermata/attività desiderata.

II. Tieni presente che nella tua classe ABC, implica lo stesso metodo onCreate e inserisci il tuo layout XYZ all'interno dello setContentView in questo modo: setContentView(R.layout.XYZ);

III. Nel file manifest, dopo la vostra

<activity 
      android:label="@string/app_name" 
      android:name=".FooFooActivity" > 


      <intent-filter > 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

aggiungere il seguente:

<activity 
      android:name=".ABC" 
      android:label="@string/app_name" 
      > 
     </activity> 

volta che hai finito con questi passaggi, eseguire il programma.

Si prega di notare che questo è solo per mostrare 2 schermi per il vostro utente. Devi ripeterlo per 20+ volte. Non lo so/vedo in nessun altro modo.

Per quanto riguarda i layout, suggerisco di restare con Relative Layout o Linear Layout. Generalmente la maggior parte dei layout "normali" può essere raggiunta da una di queste o dalla loro combinazione. Se vuoi di più, puoi sempre trovare assistenza su Android Developers' Site o Stack Overflow. Ad ogni modo, ci sono molte altre cose che non sono stato in grado di spiegare qui, ma intendo farlo a tempo debito. Puoi sempre fare riferimento a fantastici libri come Hello Android, Programming Android e Learning Android.Anche CommonsWare - Mark Murphy ha il suo set di libri che sono piuttosto popolari. Puoi sempre iniziare con qualcuno di loro.

Spero che questo aiuti. Ti auguro il meglio!

EDIT SEGUE IL TUO updation:

Certo che restituirà l'ultima attività, perché presumo che avete il seguente pezzo di codice con il pulsante di uscita:

Button exit = (Button)findViewById(R.id.button2); 
     exit.setOnClickListener(new OnClickListener() 
     { 

      public void onClick(View v) 
      { 
       finish(); 

      } 
     }); 

Quindi, fondamentalmente ciò che stai facendo sta finendo quella particolare ABC/attività principale. Ciò significa che Android ti porterà alla schermata/attività precedente. È tutto. Se mantieni lo stesso layout e pianificalo per usarlo per diverse attività, tutto diventa semplicemente confuso. Con solo 2 schermate/attività, è abbastanza confuso per te da ora. Immagina cosa potrebbe succedere con 20+. Bene, il design è in definitiva lasciato a te. Questo è tutto ciò che posso dire.

+0

@Ghost, Grazie per la spiegazione. Quindi in pratica quello che stai dicendo è che dovrei avere una classe di attività per ogni schermata di layout che voglio (20+). E per ogni pulsante dell'attività che dovevo iniziare come setIntent(). Spero di aver capito bene. – Tvd

+0

@Ghost, L'unico problema di avvio che ho - il mio main.xml rimane così com'è. Voglio iniziare con il layout "mainpage", ad esempio MainActivity del mio FooFooActivity originale. La ragione per fare questo è, dovrò impostare/mostrare MainActivity i.e. mainpage anche. Se aggiungo quel contenuto in main.xml, allora come faccio a mostrare quella schermata dalla classe ABC? – Tvd

+1

Sì, è corretto. Ma non imposti intenti su ogni pulsante del tuo layout. Esempio: se hai un pulsante di annullamento che in genere consente all'utente di uscire da quella particolare attività, passare un tentativo non ha senso. Passi un intento su un pulsante solo quando hai bisogno di quel pulsante per guidare i tuoi utenti a schermo/attività diversi .. E sì, per favore accetta la risposta se ti ha aiutato/ti aiuterà ... :) – Ghost

Problemi correlati