2012-08-09 18 views
26

¿es posible tener el método onActivityResume dentro de adapter & llamada startActivityForResult?¿podemos llamar a startActivityForResult desde el adaptador?

+0

Sí, ¿está seguro de usar startActivityForResult en Adaptador – ckpatel

+0

Tengo una vista de lista eso es obtener sus contenidos del adaptador. Tengo un botón en el adaptador, al hacer clic en el botón se iniciará otra actividad y se devolverá algo – napster

+0

http://stackoverflow.com/questions/2497205/how-to-return-a-result-startactivityforresult-from-a-tabhost-activity es un ejemplo complate lo mismo que su cuasi. lo que es útil. Todos los mejores – ckpatel

Respuesta

64

Sí. Simplemente pase el contexto de la actividad al adaptador en el constructor del adaptador (aquí almacenado como mContext). En getView, a llamar a

((Activity) mContext).startActivityForResult(intent,REQUEST_FOR_ACTIVITY_CODE); 
+0

Gracias @ user936414. – napster

+1

¿Cómo podemos estar seguros de que el contexto aquí es siempre una instancia de actividad? – Asakura

+0

@Asakura Como se menciona en la respuesta "Simplemente pase el contexto de la actividad al adaptador en el constructor del adaptador": debe pasar el contexto de actividad – user936414

4

No necesariamente entre pasadas contexto en el constructor del adaptador. Puede obtener el contexto del Grupo de Vista principal. Muestra para el adaptador RecyclerView:

Context mContext; 
@Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     mContext = parent.getContext(); 
     ... 
    } 

muestra para ListView BaseAdapter

Context mContext; 
@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     mContext = parent.getContext(); 
     ... 
} 

Y utilizar siempre que lo desee

((Activity) mContext).startActivityForResult(intent, REQUEST_FOR_ACTIVITY_CODE); 
+0

El contexto no tiene startActivityForResult? Necesitas una actividad para eso. – Kenneth

+0

Puede convertir mContext en Activity para eso: '((Activity) mContext)' – eugeneek

+1

Un problema que acabo de descubrir con este enfoque es que si está recibiendo el resultado en un Fragmento, no se entregará. Incluso si llama a super.onActivityResult (requestCode, resultCode, data); en su actividad, no parece entregar el resultado a su fragmento. En lecturas adicionales aquí: http://stackoverflow.com/questions/6147884/onactivityresult-not-being-called-in-fragment Encontré que debe realizar la llamada startActivityForResult sin ninguna actividad. ¿Pensamientos? – mparkes