2011-03-10 14 views
6

En mi aplicación necesito obtener un valor de una actividad a un servicio. El valor que necesito recuperar es el que hice clic en esa actividad.¿Se puede pasar un paquete a un servicio?

Por ejemplo: si selecciono x elemento [i] de la Actividad A, i necesidad de recuperar el valor de x [i] en un servicio S.

¿Cómo es posible?

Gracias,

Niki

Respuesta

7

En el uso de los servicios esto:

public int onStartCommand (Intent intent, int flags, int startId) 
{ 
    super.onStartCommand(intent, flags, startId); 
    Bundle bundle = intent.getExtras(); 
} 
+0

void returntype no es compatible con los argumentos !!! :( – Niki

+0

'void' returntype no es compatible con los argumentos int !!! :( – Niki

+1

@niki sorry, es int. Debería evitar copiar y pegar. Código del tipo de programador real. Y luego resuelven errores.;) – Reno

2

Cuando se crea una intención, puede poner los datos a la misma y los mismos datos serán transferidos junto con la intención cuando se inicia el servicio.

Intent intent = new Intent(context, Class) ; 
intent.putExtra(key, value); 

startService(intent); 

En el extremo receptor, obtenga la intención y obtenga un valor extra de la misma.

Bundle b = getIntent().getExtra(); 
b.get<ValueType>(key); 
+0

No encontré getIntent() en mi servicio. – Niki

+0

Encuentra getIntent() si la parte que recibe es una Actividad. Aquí en mi caso es un Servicio. – Niki

+0

@Niki, paquete b = getIntent(). GetExtra(); b.getXXX (clave); debe ser llamado dentro de los métodos onStart/onCreate de la clase de servicio que recibe. – Vinay

0

se puede anular el método onStartCommand(Intent intent, int flags, int startId) en el servicio.

Cuestiones relacionadas