Autore Topic: spinner...errore run-time!!  (Letto 494 volte)

Offline sgaglio88

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows vista
spinner...errore run-time!!
« il: 06 Novembre 2011, 12:39:53 CET »
0
Ho un piccolo problema con gli spinner!!Ho creato uno spinner che si adatta ad un array di dati che gli passo io…adesso quando apro lo spinner e clicco su una riga di esso funziona normalmente…ma ho provato ad usare su di esso il metodo setOnItemClickListener() con un toast all'interno per vedere se riuscivo ad intercettare i click su di esso e non dà nessun errore…così faccio partire il programma e quando apro l’attività dove ho creato lo spinner e su di esso ho usato il metodo sopra indicato mi compare un errore a run-time del tipo: “spiacenti!! l’applicazione ha smesso di funzionare, riprovare più tardi! ” non so dove sbaglio forse ha qualche problema di dichiarazioni…Questo cmq è il codice dell'Activity:

Codice (Java): [Seleziona]
package it.android.progetti.prova4;





//import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
//import android.widget.ListView;
import android.widget.Spinner;
import android.widget.Toast;
//import android.graphics.Color;
import android.widget.CompoundButton;
//import android.widget.LinearLayout;
import android.widget.ToggleButton;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.content.Context;
import android.content.res.Resources;
import android.app.ListActivity;



public class OnOffActivity extends ListActivity{
         public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.onoff_layout);
               
                 Context context = getApplicationContext();
               
                Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
                        //abilitiamo lo spinner per la scelta del programma all'accensione del dispositivo
                        spinner1.setEnabled(false);
           
                ToggleButton toggle = (ToggleButton)findViewById(R.id.toggleButton2);
                toggle.setOnCheckedChangeListener(new OnCheckedChangeListener(){

                       
                       
                                @Override
                                public void onCheckedChanged(CompoundButton button, boolean checked) {
                                        if(checked){
                               
                                                Spinner spinner = (Spinner) findViewById(R.id.spinner1);
                                                //abilitiamo lo spinner per la scelta del programma all'accensione del dispositivo
                                                spinner.setEnabled(true);
                                        Toast toast = Toast.makeText(getApplicationContext(), R.string.ACCESO_label, Toast.LENGTH_SHORT);
                                                // Visualizziamo il toast
                                                toast.show();
                                               
                                        }else{
                                               
                                                Spinner spinner = (Spinner) findViewById(R.id.spinner1);
                                                //disabilitiamo lo spinner per la scelta del programma allo spegnimento del dispositivo
                                                spinner.setEnabled(false);
                                                Toast toast = Toast.makeText(getApplicationContext(), R.string.SPENTO_label, Toast.LENGTH_SHORT);
                                                // Visualizziamo il toast
                                                toast.show();
                                                //container.setBackgroundColor(Color.BLUE);
                                        }
                                }
                       
                });
             
               
                Resources ris = context.getResources();
                final String[] spinnerString = ris.getStringArray(R.array.spinner_program_array);
             // Definiamo un SimpleAdapter
                        ArrayAdapter<String> adapter = createSpinnerAdapter();
                        // Associamo il layout del dropdown
                        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        // Otteniamo il riferimento allo Spinners
                        Spinner spinner = (Spinner) findViewById(R.id.spinner1);
                        // Associamo l'adapter alla Gallery
                        spinner.setAdapter(adapter);
               
                 spinner.setOnItemClickListener(new OnItemClickListener() {
               public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                       
                  // Quando cliccato visualizza un Toast col nome selezionato
                         Toast.makeText(getApplicationContext(), spinnerString[position], Toast.LENGTH_SHORT).show();
                         if(position==0){
                   
                         }
                         if(position==1){
                               
                         }
                         if(position==2){
                               
                         }
                         if(position==3){
                               
                         }
                    }
                  });
         
         }

                /*
                 * Metodo di utilità che permette di creare un SimpleAdapter
                 */

         
                private ArrayAdapter<String> createSpinnerAdapter() {
                        // Inizializziamo i dati
                final   String[] data = getResources().getStringArray(R.array.spinner_program_array);
                        // Creiamo l'adapter
                        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, data);
                        // Lo ritorniamo
                        return arrayAdapter;
                       
                }      
                       
         
}

Questo è il layout dell'activity:

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:focusable="true" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/testo_vista" android:background="@color/gray">
    <ToggleButton android:text="ToggleButton" android:layout_height="wrap_content" android:id="@+id/toggleButton2" android:layout_width="match_parent" android:textOff="@string/ACCENDI_label" android:textOn="@string/SPEGNI_label" android:textColor="@color/black" android:textStyle="normal|bold"></ToggleButton>
<ListView android:id="@android:id/list"
   android:layout_height="wrap_content"
   android:layout_width="fill_parent"
   />
<TextView android:layout_height="wrap_content" android:text="Scegliere un programma da caricare:" android:id="@+id/textView1" android:textStyle="bold" android:layout_width="wrap_content" android:textColor="@color/white"></TextView>
<Spinner android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/spinner1"></Spinner>
</LinearLayout>

Cmq se vi può servire e come si vede anche dal codice lo spinner si abilita e si disabilita al click di un toggle button...non so davvero dove sbaglio!! per favore aiutatemi!! :(

Offline salvatore cino

  • Nuovo arrivato
  • *
  • Post: 47
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy s i9000
  • Play Store ID:
    wb apps
  • Sistema operativo:
    ubuntu 11.04
R: spinner...errore run-time!!
« Risposta #1 il: 06 Novembre 2011, 14:57:31 CET »
0
Invece di usare un setOnItemClickListener che come puoi leggere dalla documentazione non è supportato dagli spinner usa un
SetOnItemSelectedListener e risolverai il tuo problema facci sapere.

Inviato dal mio GT-I9000 usando Tapatalk

Offline sgaglio88

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows vista
Re:spinner...errore run-time!!
« Risposta #2 il: 07 Novembre 2011, 12:22:23 CET »
0
ho risolto usando il metodo che mi hai consigliato...grazie mille!!

Offline salvatore cino

  • Nuovo arrivato
  • *
  • Post: 47
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy s i9000
  • Play Store ID:
    wb apps
  • Sistema operativo:
    ubuntu 11.04
R: spinner...errore run-time!!
« Risposta #3 il: 07 Novembre 2011, 15:12:49 CET »
0
Di niente;-)

Inviato dal mio GT-I9000 usando Tapatalk