Android obtient l'activité d'hébergement à partir d'une vue



Answers

Je viens d'extraire ce code source du MediaRouter dans la bibliothèque de support officielle et jusqu'à présent ça marche bien:

private Activity getActivity() {
    Context context = getContext();
    while (context instanceof ContextWrapper) {
        if (context instanceof Activity) {
            return (Activity)context;
        }
        context = ((ContextWrapper)context).getBaseContext();
    }
    return null;
}
Question

J'ai une Activity avec 3 EditText s et une vue personnalisée qui agit un clavier spécialisé pour ajouter des informations dans le EditText s.

Actuellement, je passe l' Activity dans la vue afin que je puisse obtenir le texte d'édition ciblé et mettre à jour le contenu du clavier personnalisé.

Existe-t-il un moyen de référencer l'activité parent et d'obtenir le EditText actuellement ciblé sans passer l'activité dans la vue?




Dans Android 7+, la vue n'a plus accès à l'activité englobante, ainsi view.getContext() ne peut plus être view.getContext() en activité.

Au lieu de cela, le code ci-dessous fonctionne sous Android 7+ et 6:

private static Activity getActivity(final View view) {
    return (Activity) view.findViewById(android.R.id.content).getContext();
}





Related