Conseguir un no puede hacer una redfrence estática a una no estática methed cuando llamo AsyncTask <Void.exicute
Estoy utilizando AsyncTask para cargar mapas de bits en el fondo. Creé una clase Mybackground que hereda de AsyncTask. Si hago lo siguiente funciona,
new MyBackground().execute();
Pero cuando lo llamo así,
- AsyncTask Threading Rule - ¿Realmente sólo se puede usar una vez?
- Android: ¿cómo esperar AsyncTask para terminar en MainThread?
- ¿Cómo puede un AsyncTask todavía utilizar una actividad si el usuario ya ha navegado lejos de ella?
- ¿Puede OnPostExcecute método en AsyncTask RETURN valores?
- Entendiendo el hilo de la interfaz de usuario
MyBackground mBackground=new MyBackground(); mBackground.p1=1; mBackground.p2="tets"; MyBackground.execute();
Me sale el error no puede hacer un refrence estático a un no estático. ¿Por qué estoy recibiendo este error. ¿Hay alguna forma de hacer esto? Si no lo que sería una buena manera de pasar en 2 diferentes argumentos, ya que ejecutar sólo toma en 1 parámetro?
- Cómo utilizar notifydatasetchanged in recyclerview gridlayout
- Retrofit de Android: onProgressUpdate para mostrar la notificación de progreso
- Android AsyncTask con el ciclo de vida de la actividad
- ¿Cuál es la mejor práctica para un manejador Multithreading en Android?
- Cómo extender desde AsyncTask como una clase base genérica?
- Asíntate un comportamiento extraño
- AsyncTask - ¿qué parámetros se necesitan para extender y doInBackground?
- Cómo utilizar AsyncTask para mostrar ProgressBar y cargar Rss
mBackground.execute()
llamar a mBackground.execute()
que llama al método execute
de una instancia particular de su clase MyBackground
.
Llamar a new MyBackground().execute()
crea una nueva instancia de MyBackground
y luego llama a ejecutar en que, por lo que no obtiene el error.
Eche un vistazo a Java: métodos estáticos y de instancia si no está seguro de cuál es la diferencia entre un método estático y de instancia.
Los métodos estáticos no requieren que exista una instancia de ese tipo, y las propiedades estáticas se comparten entre todas las instancias de una clase.
Si desea pasar algunos datos a su AsyncTask
puede crear un nuevo constructor para él:
public class MyBackground extends AsyncTask<Void, Void, Void> { ... private int p1; private String p2; public MyBackground(int p1, String p2) { this.p1 = p1; this.p2 = p2; } ... }
A continuación, utilice:
MyBackground myBackground = new MyBackground(1,"tets"); myBackground.execute(); // or MyBackground myBackground = new MyBackground(1,"tets").execute();
Joseph Earl tiene una buena explicación de por qué está recibiendo el error de referencia estática.
- Cómo crear ProgressDialog sin ocultar la ventana de fondo
- Cómo actualizar mis actividades a fragmentos y evitar ClassCastException?