CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: carotix con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 9 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 34 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 8 su 8
Discussione:

Crash inaspettato a causa di findViewById()

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano


    Registrato dal
    Oct 2010
    Messaggi
    171

    Ringraziamenti
    3
    Ringraziato 18 volte in 14 Posts
    Predefinito

    Crash inaspettato a causa di findViewById()

    Salve a tutti ho realizzato una piccola app per android molto semplice per capire il funzionamento degli OptionMenu...tuttavia quandro premo sul menu n2 (huho) il programma crasha. So che il problema è legato all'istanza ll, però non so come risolvere, potreste dirmi come fare? Posto il source

    PS: Scusate per i nomi stupidi

    MainActivity.java:
    codice:
    package org.me.provamenu;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuInflater;
    import android.view.MenuItem;
    import android.widget.RelativeLayout;
    
    public class MainActivity extends Activity {
        RelativeLayout ll;
    
        @Override
        public boolean onCreateOptionsMenu (Menu mymenu){
            MenuInflater inf = getMenuInflater();
            inf.inflate(R.menu.menu1, mymenu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item){
            RelativeLayout ll = (RelativeLayout)findViewById(R.layout.main);
            if (item.getItemId()==R.id.n1){
                setContentView(R.layout.main);
            } else if(item.getItemId()==R.id.n2){
                ll = (RelativeLayout) findViewById(R.layout.main);
               if(ll.getVisibility()==0x0){
                   ll.setVisibility(0x4);
                }
            }
            return true;
        }
    
    
        @Override
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);    
        }
    }
    menu1.xml:
    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@+id/n1"
              android:title="huhu" />
        <item android:id="@+id/n2"
              android:title="huhò" />
    </menu>
    main.xml:
    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">" 
        <TextView
            android:id="@+id/huho"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Huhuhuhò"/>
    
    </RelativeLayout>
    R.java:
    codice:
    package org.me.provamenu;
    
    public final class R {
        public static final class attr {
        }
        public static final class id {
            public static final int huho=0x7f050000;
            public static final int n1=0x7f050001;
            public static final int n2=0x7f050002;
        }
        public static final class layout {
            public static final int main=0x7f020000;
        }
        public static final class menu {
            public static final int menu1=0x7f040000;
        }
        public static final class string {
            public static final int app_name=0x7f030000;
        }
    }

  2.  
  3. #2
    Senior Droid


    Registrato dal
    Dec 2009
    Messaggi
    307

    Ringraziamenti
    15
    Ringraziato 40 volte in 39 Posts
    Predefinito

    Nella onOptionsItemSelected(MenuItem item) fai una roba strana:

    findViewById si usa per ottenere una view a partire da un id, tipo usando il tuo main.xml:

    potresti fare:

    Tra l'altro per usare la findViewById devi prima averci messo qualche cosa nella tua activity nell'onCreate, appunto chiamando setContentView(R.layout.main), invece tu lo fai nell'onOptionsItemSelected.... non ha molto senso

  4. Il seguente Utente ha ringraziato Orochi per il post:

    gnufabio (07-11-10)

  5. #3
    Androidiano


    Registrato dal
    Oct 2010
    Messaggi
    171

    Ringraziamenti
    3
    Ringraziato 18 volte in 14 Posts
    Predefinito

    Il fatto è che io volevo rendere visibile il layout quando viene premuto sull'option menu e renderlo invisibile quando ne viene premuto un'altro

  6. #4
    Androidiano


    Registrato dal
    Oct 2009
    Messaggi
    97

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ci sei riuscito?

  7. #5
    Senior Droid


    Registrato dal
    Dec 2009
    Messaggi
    307

    Ringraziamenti
    15
    Ringraziato 40 volte in 39 Posts
    Predefinito

    Quote Originariamente inviato da gnufabio Visualizza il messaggio
    Il fatto è che io volevo rendere visibile il layout quando viene premuto sull'option menu e renderlo invisibile quando ne viene premuto un'altro
    Metti un id al tuo RelativeLayout, setti comunque nella onCreate il layout dentro l'activity con setContentView(R.layout.main), e poi dal menu nascondi o visualizzi il tuo RelativeLayout così:

    Volendo lo stato iniziale di visibilità lo puoi settare sia nella onCreate che stesso nell'xml del layout.

  8. #6
    Androidiano


    Registrato dal
    Oct 2010
    Messaggi
    171

    Ringraziamenti
    3
    Ringraziato 18 volte in 14 Posts
    Predefinito

    Quote Originariamente inviato da Orochi Visualizza il messaggio
    Metti un id al tuo RelativeLayout, setti comunque nella onCreate il layout dentro l'activity con setContentView(R.layout.main), e poi dal menu nascondi o visualizzi il tuo RelativeLayout così:

    Volendo lo stato iniziale di visibilità lo puoi settare sia nella onCreate che stesso nell'xml del layout.
    Ma in id non c'è l'id del layout...c'è solo in R.layout =\

  9. #7
    Senior Droid


    Registrato dal
    Dec 2009
    Messaggi
    307

    Ringraziamenti
    15
    Ringraziato 40 volte in 39 Posts
    Predefinito

    Quote Originariamente inviato da gnufabio Visualizza il messaggio
    Ma in id non c'è l'id del layout...c'è solo in R.layout =\
    Infatti ti ho scritto "Metti un id al tuo RelativeLayout"
    Ad esempio così:

  10. Il seguente Utente ha ringraziato Orochi per il post:

    gnufabio (08-11-10)

  11. #8
    Androidiano


    Registrato dal
    Oct 2010
    Messaggi
    171

    Ringraziamenti
    3
    Ringraziato 18 volte in 14 Posts
    Predefinito

    Grazie mille!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy