2012-08-09 7 views
26

è possibile avere il metodo onActivityResume entro adapter & chiamare startActivityForResult?possiamo chiamare startActivityForResult dall'adattatore?

+0

Sì, sei sicuro di utilizzare startSubActivity in adattatore – ckpatel

+0

ho una visione lista quello sta prendendo il suo contenuto dall'adattatore. Ho un pulsante nell'adattatore, al clic del pulsante un'altra attività verrà avviata e restituirà qualcosa – napster

+0

http://stackoverflow.com/questions/2497205/how-to-return-a-result-startactivityforresult-from-a-tabhost-activity è un esempio completo come la tua quastion .i cosa è utile. Tutto il meglio – ckpatel

risposta

64

Sì. Basta passare il contesto dell'attività all'adattatore nel costruttore dell'adattatore (qui memorizzato come mContext). In GetView, basta chiamare

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

Grazie @ user936414. – napster

+1

Come possiamo essere sicuri che il contesto qui sia sempre un'istanza di Attività? – Asakura

+0

@Asakura Come menzionato nella risposta "Basta passare il contesto dell'attività all'adattatore nel costruttore dell'adattatore" - è necessario passare il contesto dell'attività – user936414

4

Non necessariamente passare per passare contesto nel costruttore della scheda. È possibile ottenere il contesto dal controllore ViewGroup. Esempio per l'adattatore RecyclerView:

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

campione per ListView BaseAdapter

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

e usarlo ovunque si vuole

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

Il contesto non ha startActivityForResult? Hai bisogno di un'attività per questo. – Kenneth

+0

Puoi lanciare mContext su Attività per questo: '((Attività) mContext)' – eugeneek

+1

Un problema che ho appena scoperto con questo approccio è che se stai ricevendo il risultato in un Frammento non verrà consegnato. Anche se si chiama super.onActivityResult (requestCode, resultCode, data); nella tua attività non sembra fornire il risultato al tuo frammento. In ulteriore lettura qui: http://stackoverflow.com/questions/6147884/onactivityresult-not-being-called-in-fragment Ho scoperto che è necessario effettuare la chiamata startActivityForResult senza alcuna attività. Pensieri? – mparkes

Problemi correlati