Je voudrais suggérer une approche différente qui, à mon avis, nécessite moins de code et est plus "conviviale" pour la localisation.
Supposons que votre activité de destination s'appelle "ActivityStack", définissez dans le manifeste un filtre d'intention pour celle-ci avec un schéma personnalisé (par exemple, "myappscheme") dans AndroidManifest.xml :
<activity
android:name=".ActivityStack">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:host="stack"/>
<data android:scheme="myappscheme" />
</intent-filter>
</activity>
Définissez le TextView sans aucune balise spéciale (il est important de ne PAS utiliser la balise "Android:autoLink", voir : https://stackoverflow.com/a/20647011/1699702 ) :
<TextView
android:id="@+id/stackView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stack_string" />
puis utiliser un lien avec un schéma personnalisé et l'héberger dans le texte du TextView comme (dans String.xml) :
<string name="stack_string">Android is a Software <a href="myappscheme://stack">stack</a></string>
et "activer" le lien avec setMovementMethod() (dans onCreate() pour les activités ou onCreateView() pour les fragments) :
TextView stack = findViewById(R.id.stackView);
stack.setMovementMethod(LinkMovementMethod.getInstance());
Cela ouvrira l'activité de la pile en tapant sur le mot "pile".