2012-08-09 16 views
26

ist es möglich, die Methode onActivityResume innerhalb adapter & Anruf startActivityForResult zu haben?können wir startActivityForResult von Adapter aufrufen?

+0

wollen Ja, sind Sie sicher startActivityForResult in – ckpatel

+0

Adapter verwenden i eine Listenansicht haben das bekommt seinen Inhalt vom Adapter. Ich habe einen Knopf im Adapter, auf Knopfdruck startet eine andere Aktivität und gibt etwas zurück – napster

+0

http://stackoverflow.com/questions/2497205/how-to-return-a-result-startactivityforresult-from-a-tabhost-activity es ist ein Komplettes Beispiel wie Ihre Quastion .i Sache ist es hilfreich..All das Beste – ckpatel

Antwort

64

Ja. Übergeben Sie einfach den Kontext der Aktivität an den Adapter im Konstruktor des Adapters (hier als mContext gespeichert). In getView, rufen Sie einfach

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

Danke @ user936414. – napster

+1

Wie können wir sicher sein, dass der Kontext hier immer eine Instanz von Activity ist? – Asakura

+0

@Asakura Wie in der Antwort erwähnt "übergeben Sie einfach den Kontext der Aktivität an den Adapter im Konstruktor des Adapters" - müssen Sie den Kontext der Aktivität übergeben – user936414

4

Nicht unbedingt Kontext in Adapter Konstruktor übergeben übergeben. Sie können einen Kontext von der übergeordneten ViewGroup abrufen. Probe für RecyclerView Adapter:

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

Probe für Listview BaseAdapter

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

Und es verwenden, wo immer Sie

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

Der Kontext hat nicht startActivityForResult? Sie benötigen dazu eine Aktivität. – Kenneth

+0

Sie können mContext für Activity in Activity umwandeln: '((Activity) mContext)' – eugeneek

+1

Ein Problem, das ich gerade mit diesem Ansatz entdeckt habe, ist, wenn Sie das Ergebnis in einem Fragment erhalten, wird es nicht geliefert. Selbst wenn Sie super.onActivityResult aufrufen (requestCode, resultCode, data); in Ihrer Aktivität scheint es das Ergebnis nicht zu Ihrem Fragment zu liefern. Weitere Informationen finden Sie hier: http://stackoverflow.com/questions/6147884/onactivityresult-not-being-called-in-fragment Ich habe festgestellt, dass Sie den Aufruf startActivityForResult ohne Aktivität ausführen müssen. Gedanken? – mparkes

Verwandte Themen