PDA

Ver la Versión Completa : [ CONSULTA ] Como generar un toast al seleccionar en un Spinner


Zephys
26/11/14, 23:43:57
Buenas tardes. Estoy comenzando en la programación android y me encuentro con bastantes problemas. El problema principal es que intento que se genere un toast al seleccionar una opcion en un spinner. Consigo que se lance si se pulsa un boton, pero la idea es que al seleccionar la opcion en el spinner lance el toast directamente con un mensaje como "has seleccionado x". El codigo de la activitie es:



<LinearLayout xmlns:android= "http:schemas.android.comapkresandroid"
xmlns:tools= "http:schemas.android.comtools"
android:layout_width= "match_parent"
android:layout_height= "match_parent"
android:orientation= "vertical" >

<Spinner
android:id= "@+idspin_planetas"
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:entries= "@arrayplanetas" >

<Button
android:id= "@+idbtn_seleccion"
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:onClick= "onButtonClick"
android:text= "Preme cando selecciones" >

<TextView
android:id= "@+idlbl_resultado"
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:text= "Selecciona un planeta" >

<LinearLayout>


El codigo del array sería:



<?xml version= "1.0" encoding= "utf-8" ?>
<resources>
<string-array name= "planetas" >
<item>Mercurio <item>
<item>Venus <item>
<item>Terra <item>
<item>Marte <item>
<item>Xúpiter <item>
<item>Saturno <item>
<item>Urano <item>
<item>Neptuno <item>
<string-array>
<resources>
Y el codigo que tengo hasta ahora en java es:

package com.example.u2_12_spinner ;

import android.app.Activity ;
import android.os.Bundle ;
import android.view.Menu ;
import android.view.View ;
import android.widget.AdapterView ;
import android.widget.AdapterView.OnItemSelectedListener ;
import android.widget.Spinner ;
import android.widget.TextView ;

public class U2_12_Spinner extends Activity {

@Override
protected void onCreate (Bundle savedInstanceState ) {
super. onCreate (savedInstanceState ) ;
setContentView (R. layout. activity_u2_12__spinner ) ;

Spinner spinPlanetas = (Spinner ) findViewById (R. id. spin_planetas ) ;

spinPlanetas. setOnItemSelectedListener ( new OnItemSelectedListener ( ) {

@Override
public void onItemSelected (AdapterView <?> parent, View view,
int pos, long id ) {
TODO Auto-generated method stub

TextView lblResultado = (TextView ) findViewById (R. id. lbl_resultado ) ;

lblResultado. setText ( "Seleccionaches "
+ parent. getItemAtPosition (pos )
+ " que está na posición " + pos ) ;

}

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

}
} ) ;
}

@Override
public boolean onCreateOptionsMenu ( Menu menu ) {
Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater ( ). inflate (R. menu. u2_12__spinner, menu ) ;
return true ;
}

public void onButtonClick ( View v ) {
Spinner spinPlanetas = (Spinner ) findViewById (R. id. spin_planetas ) ;
TextView lblResultado = (TextView ) findViewById (R. id. lbl_resultado ) ;

lblResultado. setText ( "Seleccionaches " + spinPlanetas. getSelectedItem ( )
+ " que está na posición " + spinPlanetas. getSelectedItemId ( ) ) ;
}

}
Lo que hace está aplicación hasta ahora es que cuando seleccionamos una opcion en el spinner escribe un mensaje indicando que nombre has elegido y la posición en la que se encuentra en el spinner. Ahora me gustaría que por ejemplo devuelva el mensaje "Has seleccionado X" pero en un toast.

Alguien sabe como solucionarlos? Muchas gracias por adelantado.

JamesRevelo
27/11/14, 03:28:00
Te refieres a esto:

Toast.makeText(this, "Tu texto", Toast.LENGH_SHORT).show();

Zephys
27/11/14, 11:35:09
Si, ese es el codigo del toast, el problema que tengo es que no se como aplicarlo a mi codigo para que al hacer una selección en el spinner salga el toast directamente.

Dexafree
27/11/14, 12:54:59
Antes de leer la respuesta estaría bien que comprendieras por qué se hace cada cosa.

Además, si vas a publicar código en el foro te recomiendo que lo hagas utilizando las etiquetas [ CODE], de modo que quede debidamente formateado

Dicho esto, en el código


Spinner spinPlanetas = (Spinner ) findViewById (R.id.spin_planetas ) ;


Estás guardando en la variable spinPlanetas la View del spinner como tal, y a partir de ahí en el siguiente código le asignas el listener.


spinPlanetas. setOnItemSelectedListener ( new OnItemSelectedListener ( ) {

// Este método es llamado cuando se selecciona un item en el spinner
@Override
public void onItemSelected (AdapterView <?> parent, View view,int pos, long id ) {

// Aquí te estás guardando un TextView donde mostrarás el resultado
TextView lblResultado = (TextView ) findViewById (R.id.lbl_resultado ) ;

// Aquí, al TextView que acabas de guardarte, le asignas el item seleccionado
lblResultado. setText ( "Seleccionaches "
+ parent. getItemAtPosition (pos )
+ " que está na posición " + pos ) ;

// Por tanto, aquí es donde deberías poner tu Toast

}

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

}
} ) ;

Zephys
28/11/14, 10:42:58
Resulta que realmente estaba poniendo bien el toast, pero no estaba definiendo las variables ni los nombres correctamente, por eso no generaba el toast correctamente. Muchas gracias por la ayuda. :gracias::dios::dios::dios: