2011-12-21 17 views
23

Estoy tratando de obtener la posición (número) de la ruleta cuando se selecciona para usarla en otra actividad que mostrará un mapa diferente cada vez dependiendo del elemento seleccionado. cuando ejecuto la aplicación, falla. este es el primer código de la actividad:Obtener la posición de una ruleta en Android

public class TestProjectActivity extends Activity { 
    public Spinner spinner1; 
    public Integer number; 
    private Button valideButton; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     MySpinner(); 
     valide_button(); 

    } 

    public void MySpinner() { 

     final Spinner spinner1 = (Spinner) findViewById(R.id.spinner1); 

     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
       this, R.array.num, android.R.layout.simple_spinner_item); 
             adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner1.setAdapter(adapter); 

     spinner1.setOnItemSelectedListener(new OnItemSelectedListener() { 

      public void onItemSelected(AdapterView<?> parentView, 
        View selectedItemView, int position, long id) { 
       // Object item = parentView.getItemAtPosition(position); 

       TestProjectActivity.this.number = spinner1 
         .getSelectedItemPosition() + 1; 

      } 

      public void onNothingSelected(AdapterView<?> arg0) {// do nothing 
      } 

     }); 

    } 

    public void valide_button() { 

     valideButton = (Button) findViewById(R.id.valide_button); 
     valideButton.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 

       Intent intent = new Intent(TestProjectActivity.this, 
         MetroMapActivity.class); 
       startActivity(intent); 
      } 

     }); 

    } 

} 

Respuesta

63

La manera de obtener la selección de la ruleta es: Referencia

spinner1.getSelectedItemPosition(); 

Documentación: http://developer.android.com/reference/android/widget/AdapterView.html#getSelectedItemPosition()

Sin embargo, en su código, el único lugar lo está haciendo referencia está dentro de su setOnItemSelectedListener(). No es necesario sondear la ruleta, porque el método onItemSelected pasa la posición como la variable de "posición".

por lo que podría cambiar esa línea a:

TestProjectActivity.this.number = position + 1; 

Si esto no soluciona el problema, por favor, puesto el mensaje de error generado cuando su aplicación se bloquea.

+0

Ya en el código, pero cuando trato de usar 'número' en otra actividad, se bloquea –

+0

trate de mover "número" en una clase de aplicación. Las variables de actividad son mejores al permanecer dentro de la actividad. Alternativamente, intente configurar el número como un miembro estático. lea aquí: http://stackoverflow.com/q/4208886/602661 –

+0

Briliant! Creé una clase de aplicación que contendrá los datos que compartiré entre las 2 actividades. Salud Amigo. –

0
final int[] positions=new int[2]; 
    Spinner sp=findViewByID(R.id.spinner); 

    sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      // TODO Auto-generated method stub 
      Toast.makeText(arg2....); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

     } 
    }); 
0
if (position ==0) { 
    if (rYes.isChecked()) { 
     Toast.makeText(SportActivity.this, "yes ur answer is right", Toast.LENGTH_LONG).show(); 
    } else if (rNo.isChecked()) { 
     Toast.makeText(SportActivity.this, "no.ur answer is wrong", Toast.LENGTH_LONG).show(); 
    } 
} 

Este código se supone que seleccione las dos casillas de verificación.
¿Hay algún problema con eso?

Cuestiones relacionadas