2012-08-09 18 views
26

Czy możliwe jest posiadanie metody onActivityResume w ramach adapter & połączenia startActivityForResult?czy możemy wywołać metodę startActivityForResult z adaptera?

+0

Tak, są na pewno korzystać startActivityForResult adapter – ckpatel

+0

Mam widoku listy to pobiera jego zawartość z adaptera. Mam przycisk w adapterze, po kliknięciu przycisku inna aktywność uruchomi się i zwróci coś pod numer: – napster

+0

http://stackoverflow.com/questions/2497205/how-to-return-a-result-startactivityforres---tabhost-activity jest to przykład taki sam jak twój quastion .i rzecz jest pomocna. Wszystkie najlepsze – ckpatel

Odpowiedz

64

Tak. Wystarczy przekazać kontekst działania do adaptera w konstruktorze adaptera (przechowywanym tutaj jako mContext). W getView, zadzwoń

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

Dzięki @ user936414. – napster

+1

Jak możemy być pewni, że kontekst tutaj jest zawsze przykładem działania? – Asakura

+0

@Aakura Jak wspomniano w odpowiedzi "Wystarczy przekazać kontekst działania do adaptera w konstruktorze adaptera" - trzeba podać kontekst działania – user936414

4

Niekoniecznie przejazdami na kontekst w konstruktora adaptera. Kontekst można uzyskać z nadrzędnej grupy ViewGroup. Próbkę do adaptera RecyclerView:

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

próbki dla ListView BaseAdapter

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

i używać go wszędzie tam, gdzie chcesz

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

Kontekst nie ma funkcji startActivityForResult? Potrzebujesz do tego Aktywności. – Kenneth

+0

Możesz rzutować mContext do Activity dla tego: '((Aktywność) mContext)' – eugeneek

+1

Jedyny problem, który właśnie odkryłem z tym podejściem, jeśli otrzymujesz wynik w Fragmentie, nie zostanie on dostarczony. Nawet jeśli wywołasz super.onActivityResult (requestCode, resultCode, data); w twojej działalności wydaje się, że nie dostarcza wyniku do twojego fragmentu. W dalszej części artykułu: http://stackoverflow.com/questions/6147884/onactivityresult-not-being-called-in-fragment znalazłem, że musisz wywołać startActivityForResult bez żadnej aktywności. Myśli? – mparkes

Powiązane problemy