OnClick en textview

Resuelto
Debutant en webmastering Mensajes publicados 444 Estado Miembro -  
Debutant en webmastering Mensajes publicados 444 Estado Miembro -
Hola,

en el marco de un proyecto, estoy sujeto a la restricción de pasar por un onClick en un textView (restricción que me permite no desnaturalizar lo existente).

al hacer algunas investigaciones, he encontrado una solución, a saber:

//En tu XML añade esto, android:clickable="true"
//en tu activity úsalo así, textView.setOnClickListener(new View.OnClickListener(){ public void onClick(){ } }

Parece según la doc de java que esta funcionalidad ya no está disponible (o tal vez no la he encontrado, es muy posible), me he topado con onKeyUp, que “podría” resolver el problema, pero al invocar a mi textView, no tengo acceso a este tipo de funcionalidades vía IntelliSense.

¿Tendríais una solución para resolver este problema?

Configuración: Linux / Firefox 47.0

Atentamente, Becario en desarrollo de web.

6 respuestas

  1. BunoCS Mensajes publicados 436 Fecha de registro   Estado Moderador Última intervención   3 930
     
    Non, el contexto no ha cambiado. Es solo que this no representa lo que esperas ;)
    Cuando estás en el método
    onClick()
    , formas parte de un objeto de tipo
    OnClickListener
    . Por lo tanto, a este nivel, el
    this
    representa ese objeto. Por lo tanto, debes usar el contexto de la Activity:
    Intent asking_if_time = new Intent(TonActivity.this, Asking_If_Time.class);

    Algunas observaciones:
    - una buena práctica a nivel de nomenclatura de variables es mantener el tipo del objeto, especialmente para las Activity. Cuando miras tu código, no sabemos que Asking_If_Time es de tipo Activity. Te propongo AskingIfTimeActivity
    - otra buena práctica es no usar guiones bajos. Es preferible la notación CamelCase
    - En CCM, piensa en usar el botón "Responder al tema" en azul en lugar de añadir un comentario

    @+ 
    Buno, Mode CS-CCM 
    Lo urgente está hecho, lo imposible está en curso. Para los milagros, prevé un retraso... 
    The urgent is done, the impossible is underway. For miracles, provide for a delay...
    1
  2. BunoCS Mensajes publicados 436 Fecha de registro   Estado Moderador Última intervención   3 930
     
    Hola,

    ¿Por qué dices que no está disponible?
    TextView
    que hereda de
    View
    , no hay problema

    --
    @+ 
    Buno, Modo CS-CCM 
    La urgencia está hecha, lo imposible está en curso. Para los milagros, prevean un retraso...
    The urgent is done, the impossible is underway. For miracles, provide for a delay...
    0
  3. Debutant en webmastering Mensajes publicados 444 Estado Miembro
     
    con el poco conocimiento de Java que tengo, sí me parece correcto, sin embargo al seguir buscando, podría venir del lugar donde pongo ese fragmento de código; aparentemente hay que colocarla dentro del propio onCreate como lo muestra este código
    public class mainactivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Button SuSe = (Button) findViewById(R.id.SuSe); SuSe.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Button Clicked } }); } }

    pero confieso que no “visualizo el funcionamiento” de esta manera de hacer (poco práctica Android Studio)
    0
  4. BunoCS Mensajes publicados 436 Fecha de registro   Estado Moderador Última intervención   3 930
     
    La asignación de un OnClickListener se puede hacer en cualquier lugar, siempre y cuando tengas acceso al componente gráfico asociado. El código que muestras es correcto. No dudes en publicar tu código problemático si hace falta.

    pero j'avoue ne pas "visualiser le fonctionnement" de cette façon de faire (peu de patique Android Studio)
    No es tan complicado. Tienes un objeto (aquí un TextView) y le asignas un parámetro (aquí un OnClickListener) mediante un método (aquí setOnClickListener).
    Y atención! Android Studio, es el IDE. Cuando hables del lenguaje, hay que decir Android ;)

    --
    @+ 
    Buno, Modo CS-CCM 
    L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai... 
    The urgent is done, the impossible is underway. For miracles, provide for a delay...
    0
  5. Debutant en webmastering Mensajes publicados 444 Estado Miembro
     
    Gracias por la precisión sobre el IDE y el lenguaje de programación; en cuanto al código que no funcionaba, es un error mío, había olvidado recuperar mi TextView dentro de una variable gracias a findViewById; sin embargo, al colocar esa porción de código directamente en onCreate, el contexto cambia y por tanto aparece el error Cannot resolve constructor Intent. Aquí está el código en cuestión:

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_temperature__high); String message = getIntent().getStringExtra("temperature_high_question"); TextView textView = (TextView) findViewById(R.id.Textview_temperature_high_Question); textView.setText(message); TextView textView1 = (TextView) findViewById(R.id.Textview_temperature_high_PC_Consol_Use); textView1.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ //erreur sur le this Intent asking_if_time = new Intent(this, Asking_If_Time.class); startActivity(asking_if_time); } }); }
    0
  6. Debutant en webmastering Mensajes publicados 444 Estado Miembro
     
    Te agradezco por todas las informaciones además de las respuestas a mis numerosas preguntas, me ayudan mucho

    --
    Atentamente, principiante en manejo de sitios web
    0