2017-07-24 8 views
0

J'ai une activité avec un adaptateur extends RecyclerView.Adapter<UserProfileAdapter.ViewHolder>. Le problème est que lorsqu'un utilisateur clique sur un « autolink » dans l'un des éléments de la liste, je reçois l'exception suivante:AndroidRuntimeException lorsque vous cliquez sur une URL dans l'activité

Dans mon UserProfileActivity, j'instancier mon adaptateur comme son:

UserProfileAdapter adapter = new UserProfileAdapter(getApplicationContext(), posts); 

Dans le adaptateur, je récupère le contexte comme celui-ci:

private Context mContext; 
    private List<ParseObject> mYeets; 
    private UserProfileAdapter adapter; 

    public UserProfileAdapter(Context context, List<ParseObject> yeets) { 
     super(); 

     this.mYeets = yeets; 
     this.mContext = context; 
     this.adapter = this; 
    } 

enter image description here

Comment puis-je faire en sorte que le texte autolinked ne produit pas cette erreur? Puisqu'il n'y a pas de code associé au lien/intention, que dois-je faire?

+1

Qu'est-ce qui n'est pas clair dans le message que vous avez saisi? –

+0

Le fait qu'il n'y a pas d'intention réelle qui lance le lien. C'est un texte "auto-lié" dans l'un des éléments de la liste Recycler. Je ne peux donc pas simplement ajouter un drapeau à l'intention. – santafebound

Répondre

2

android.util.AndroidRuntimeException est lancé car dans votre application utilise Application Context pour démarrer une activité sans le drapeau FLAG_ACTIVITY_NEW_TASK. Android Runtime n'autorise pas ce type d'action car il n'y a pas de pile pour ajouter cette nouvelle activité et l'indicateur FLAG_ACTIVITY_NEW_TASK est important pour créer une nouvelle pile dans votre application. Pour résoudre ce problème, vous pouvez passer le contexte d'activité à l'adaptateur au lieu du contexte d'application (à savoir: utiliser this).

.: par exemple UserProfileAdapter adapter = new UserProfileAdapter(this, posts);

bonnes pratiques: Toujours utiliser Contexte d'activité pour travailler avec des éléments de l'interface utilisateur.