Android Múltiples secuencias de clics en textview

Estoy creando una pequeña aplicación de Android. Me gustaría mostrar un texto en una vista de texto con varias partes para hacer clic en. (Cada uno debe mostrar un mensaje diferente)

Finalmente me las arreglé para averiguar cómo mostrar mutiple spans en un textview, sin embargo, lamentablemente los métodos onClick no funcionan. Simplemente no pasa nada, ni siquiera una línea logcat.

Tengo algo como esto:

SpannableStringBuilder ssb=new SpannableStringBuilder(); ssb.append("first second") ssb.setSpan(new ClickableSpan() { @Override public void onClick(View v) { //Eredmeny2.this is just the context, name of the whole class Toast.makeText(Eredmeny2.this, "first", Toast.LENGTH_LONG).show(); } }, 1, 3, 0); ssb.setSpan(new ClickableSpan() { @Override public void onClick(View v) { Toast.makeText(Eredmeny2.this, "second", Toast.LENGTH_LONG).show(); } }, 7, 10, 0); TextView t1=new TextView(this); t1.setText(ssb); ... 

El texto se subraya bien, pero no pasa nada cuando hago clic en ellos. Es una parte de un TableView, aunque no creo que esto sea relevante. ¿Tienes alguna idea de por qué no hace nada? ¿Qué extraño? ¿O debo hacerlo de alguna manera totalmente diferente?

Gracias por adelantado.


El archivo de diseño que esta parte utilizará es el siguiente:

 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/ScrollView01" android:background="#FF0000"> <TableLayout android:id="@+id/TableLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:stretchColumns="0" android:showDividers="middle" android:padding="3dp"> <TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="3dp" android:background="#000000" android:textColor="#FFFFFF" android:padding="6dp" android:text="Hour" android:textSize="20sp" android:textStyle="bold" > </TextView> <TextView android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:textStyle="bold" android:text="Minute" android:padding="6dp" android:textColor="#FFFFFF" android:background="#000000"> </TextView> </TableRow> </TableLayout> </ScrollView> 

Y el diseño TextView que TextView utiliza directamente es el siguiente:

 <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tv" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10dp" android:textSize="16sp" android:background="#000000" android:textIsSelectable="false" android:textColor="#FFFFFF"> </TextView> 

Como entiendo que desea hacer múltiples partes de textview clicable.

Este código funcionó para mí!

 SpannableString ss = new SpannableString("this is a text"); ss.setSpan(new myClickableSpan(1),0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); ss.setSpan(new myClickableSpan(2),5, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); ss.setSpan(new myClickableSpan(3),8, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); mTextView.setText(ss); mTextView.setMovementMethod(LinkMovementMethod.getInstance()); 

Sólo haga clickableSpan personalizado para manejar el evento de clic

 public class myClickableSpan extends ClickableSpan{ int pos; public myClickableSpan(int position){ this.pos=position; } @Override public void onClick(View widget) { Toast.makeText(getApplicationContext(), "Position " + pos + " clicked!", Toast.LENGTH_LONG).show(); } } 
  • ¿Cómo agregar onclicklistener a la vista de texto generada dinámicamente?
  • ¿Mostrando la hora actual en Android y actualizarla?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.