Si tiene un identificador para un objeto Spinner en una actividad de Android, ¿puede abrir mediante programación las opciones del spinner, obligando así al usuario a elegir una opción aunque no haya hecho clic en Spinner
ellos mismos?
89
performClick()
puede que no sea suficiente, si recibe elUnable to add window
error, vea qué hacer aquí .Respuestas:
Para abrir el Spinner, solo necesita llamar a su método performClick () .
Tenga en cuenta que solo puede llamar a este método desde el hilo de la interfaz de usuario. Si necesita abrir Spinner desde un hilo separado, debe crear un Handler en el hilo de la interfaz de usuario y luego, desde su segundo hilo, enviar un objeto ejecutable que llame a performClick () al Handler.
package com.example.SpinnerDemo; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.os.Handler; public class SpinnerDemo extends Activity { private Handler h; private Spinner s; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); h = new Handler(); s = (Spinner) findViewById(R.id.spinner); ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.planets, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item); s.setAdapter(adapter); // Open the Spinner... s.performClick(); // Spawn a thread that triggers the Spinner to open after 5 seconds... new Thread(new Runnable() { public void run() { // DO NOT ATTEMPT TO DIRECTLY UPDATE THE UI HERE, IT WON'T WORK! // YOU MUST POST THE WORK TO THE UI THREAD'S HANDLER h.postDelayed(new Runnable() { public void run() { // Open the Spinner... s.performClick(); } }, 5000); } }).start(); } }
Los recursos utilizados por este ejemplo se pueden encontrar aquí .
fuente
Para mostrar los
Spinner
elementos, solo necesita llamar a superformClick()
método.fuente
No es necesario utilizar 2 ejecutables como se muestra en el ejemplo anterior.
Con esto bastará:
h.postDelayed(new Runnable() { public void run() { s.performClick(); } }, 5000);
fuente
Simplemente usa esto
yourspinner.performClick();
fuente