Autore Topic: gestione Activity multiple  (Letto 1247 volte)

megasalexandros356323

  • Visitatore
gestione Activity multiple
« il: 27 Luglio 2011, 10:13:49 CEST »
0
Salve a tutti ! Ho un problema di gestione di due activity. Ho una app con una schermata ed una activity principale, poi un optionmenu da cui passare ad una seconda schermata dove ho sostanzialmente una immagine ed un bottone (e la relativa seconda activity) per settare l'immagine stessa come wallpaper (questo il codice Android Set Image as Wallpaper | Androidpeople.com).

Standalone la seconda activity funziona a dovere. Il problema credo è che, passando per un option menu, la seconda activity (che inoltre fa anche il setContentView della pagina stessa, cosa che a me non serve visto che la pagina viene richiamata dall'option menu...) non viene mai chiamata e quindi il bottone non lavora. Ho fatto diversi tentativi (nuovi intent, nuove funzioni, subactivity,...), ma tutti a vuoto. 

Probabilmente, è un problema da poco per un buon  programmatore. Io nasco come web designer però (anzi video editor) e java mi crea qualche problema...  Aiuto! o_O

Offline gsources75

  • Utente normale
  • ***
  • Post: 327
  • Respect: +9
    • Google+
    • pepigno75
    • devandroid_it
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus S - Vodafone Smart -BB Bold- Iphone 4-
  • Play Store ID:
    Giuseppe+Sorce
  • Sistema operativo:
    Ubuntu-Windows Seven- Mac Lion
Re:gestione Activity multiple
« Risposta #1 il: 27 Luglio 2011, 10:24:04 CEST »
0
Un po di codice.. è meglio.. cosi è complicato..
La domanda stupida è quella che non si fa

megasalexandros356323

  • Visitatore
Re:gestione Activity multiple - un pò di codice...
« Risposta #2 il: 27 Luglio 2011, 11:01:06 CEST »
0
//////////dall'Activity principale....////////////

Codice (Java): [Seleziona]
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
        }    

...omissis....

Codice (Java): [Seleziona]
public boolean onOptionsItemSelected(MenuItem item) {
                switch(item.getItemId()){
                case R.id.legenda:
                        setContentView(R.layout.legenda);
                        return true;
                case R.id.wallpaper:
                        setContentView(R.layout.wallpaper);          /////// optionmenu per il layout wallpaper//////
                        return true;
                default:
                        return false;
                }      
        }

...omissis....

//////////layout wallpaper////////////

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical">

<Button android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/Button01"
android:text="Imposta come wallpaper"
android:layout_gravity="center_horizontal"
android:layout_marginTop="2dp">
</Button>

<ImageView
android:src="@drawable/bbg"
android:id="@+id/ImageView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</ImageView>
</LinearLayout>

//////////Activity wallpaper////////////  (vd. link post precedente)

Codice (Java): [Seleziona]
public class wallpaper extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.wallpaper); /* già ci sono ! */
 
                ImageView imageView = (ImageView) findViewById(R.id.ImageView01);
                imageView.setBackgroundResource(R.drawable.bbg);

                Button button = (Button) findViewById(R.id.Button01);
                button.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                                Bitmap bitmap = BitmapFactory.decodeStream(getResources()
                                                .openRawResource(R.drawable.bbg));

                                try {
                                        getApplicationContext().setWallpaper(bitmap);
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                        }
                });

        }

}
« Ultima modifica: 27 Luglio 2011, 16:22:27 CEST da Ricky` »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:gestione Activity multiple
« Risposta #3 il: 27 Luglio 2011, 16:23:34 CEST »
0
Usa il tasto code!

Comunque devi far partire l'activity usando il comando startActivity :)

megasalexandros356323

  • Visitatore
Re:gestione Activity multiple
« Risposta #4 il: 27 Luglio 2011, 16:59:51 CEST »
0
Grazie per i suggerimenti. Puoi spiegarti meglio?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:gestione Activity multiple
« Risposta #5 il: 27 Luglio 2011, 17:07:47 CEST »
0
Grazie per i suggerimenti. Puoi spiegarti meglio?

Cosa non ti è chiaro? :)
Hai sbagliato comando, tu fai dei setContentView andando a cambiare il layout della tua activity quando invece devi farne partire un altra (l'activity wallpaper) tramite il metodo startActivity.
Dai un occhio a questo tutorial

[facile] Passaggio di dati tra un'activity ed un'altra - Android Developers Italia

dove viene gestito il passaggio da un'activity all'altra.

megasalexandros356323

  • Visitatore
Re:gestione Activity multiple
« Risposta #6 il: 27 Luglio 2011, 20:45:38 CEST »
0
A ragion di logica, nella classe principale ho fatto...
Codice (Java): [Seleziona]
       
Intent intent;
Intent myIntent = new Intent(getApplicationContext(), wallpaper.class);

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);

più questo... 
Codice (Java): [Seleziona]
       
case R.id.wallpaper:
                        startActivity(myIntent);
                        setContentView(R.layout.wallpaper);
                        Toast.makeText(this,"Premi per impostare come wallpaper",Toast.LENGTH_LONG).show();
                        isPaginaPrincipale = false;

eliminando, ovvio, il setContentView dalla classe wallpaper. e non va... >:(

megasalexandros356323

  • Visitatore
Re:gestione Activity multiple
« Risposta #7 il: 28 Luglio 2011, 11:17:20 CEST »
0
O è il contrario? ciòé faccio semplicemente partire la nuova activity dal menu...

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:gestione Activity multiple
« Risposta #8 il: 28 Luglio 2011, 13:54:15 CEST »
0
O è il contrario? ciòé faccio semplicemente partire la nuova activity dal menu...

Mi sa che non hai guardato il tutorial che ti ho linkato, vero?
c'è tutto quello che ti serve li dentro, devi solo adattarlo...

megasalexandros356323

  • Visitatore
Re:gestione Activity multiple
« Risposta #9 il: 28 Luglio 2011, 14:53:54 CEST »
0
Mi sa che non hai guardato il tutorial che ti ho linkato, vero?
c'è tutto quello che ti serve li dentro, devi solo adattarlo...

Certo, altrimenti neanche mi azzardo a postare! Solo mi domando, non fai prima a rispondere piuttosto che fornire indizi? In ogni caso, grazie. a presto...

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:gestione Activity multiple
« Risposta #10 il: 28 Luglio 2011, 14:56:59 CEST »
0
Certo, altrimenti neanche mi azzardo a postare! Solo mi domando, non fai prima a rispondere piuttosto che fornire indizi? In ogni caso, grazie. a presto...


Non posso risponderti direttamente fino a quando tu usi parole come "non va" senza fornire ulteriori dettagli, tra cui il logcat.
Inoltre se ti fornissi direttamente la soluzione tu la copieresti a pappagallo e non capiresti niente, se invece ti sforzi di capire dove sbagli guardando altro codice impari molto di più.

megasalexandros356323

  • Visitatore
Re:gestione Activity multiple
« Risposta #11 il: 28 Luglio 2011, 15:05:01 CEST »
0
mah

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:gestione Activity multiple
« Risposta #12 il: 28 Luglio 2011, 19:47:30 CEST »
0
mah

Non mi sembra una risposta molto sensata...

Da quello che hai postato e dal codice si vede che molte parti sono un copia e incolla, Ricky`ti ha giustamente fornito un utile link di studio, ma è stato ignorato.
Che cosa è e cosa fa setContentView e cosa fa startActivity ? Sembra che tu stia usando questi metodi in maniera casuale...

Citazione da: megasalexandros356323
eliminando, ovvio, il setContentView dalla classe wallpaper

E perchè l'hai eliminato dalla classe wallpaper ??

A parer mio dovresti studiarti un po' di più le basi sulla programmazione android...nonchè sulla programmazione in generale.
Se qualcosa non ti è chiaro chiedi sul forum, ma partire a fare un app chiedendo codice da "incollare" non è la strada giusta.