web-dev-qa-db-fra.com

pouvons-nous appeler startActivityForResult depuis l'adaptateur?

est-il possible d'avoir la méthode onActivityResume dans adapter & appeler startActivityForResult?

35
napster

Oui. Passez simplement le contexte de l'activité à l'adaptateur dans le constructeur de l'adaptateur (ici stocké en tant que mContext). Dans getView, appelez simplement

((Activity) mContext).startActivityForResult(intent,REQUEST_FOR_ACTIVITY_CODE);
88
user936414

Pas nécessairement passer pour passer le contexte dans le constructeur de l'adaptateur. Vous pouvez obtenir le contexte du ViewGroup parent. Exemple d'adaptateur RecyclerView:

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

Exemple pour ListView BaseAdapter

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

Et utilisez-le où vous voulez

((Activity) mContext).startActivityForResult(intent, REQUEST_FOR_ACTIVITY_CODE);
6
eugeneek

Offcource ...

((Activity) context).startActivityForResult(intent, 911);

Mise en garde !!

Ne passez que MyActivity.this de l'activité à l'adaptateur comme contexte.

Ne passez que getActivity (); du fragment à l'adaptateur comme contexte.

2
Ali Nawaz