obtiene el objeto Activity mientras está en el contexto View

Este es un seguimiento de este post:

findViewById en una subclase SurfaceView throwing RuntimeException

Sobre la base de los comentarios de Romain Guy (que aceptaré en breve, ya que es una solución), me gustaría obtener la actividad de llamada desde dentro de la vista, para que pueda utilizarla para obtener el recurso TextView deseado.

No veo ningún método en Ver esa actividad de devolución. ¿Cuál es la forma apropiada de hacer esto? ¿O existe una mejor alternativa para trabajar con TextViews desde dentro de otro contexto de Vista.

Básicamente, estoy llamando a setContentView (R.layout.xxx) en onCreate () (como de costumbre), así que realmente no tengo una manera de pasar en las referencias a TextViews adicionales a menos que desafortunadamente recuperar la vista después de setContentView y luego hacer llamadas en eso.

Una actividad es un contexto, pero no hay garantía de que el contexto utilizado por una vista sea siempre una actividad. Conseguir las vistas de onCreate () para hacer una cierta disposición es perfectamente válido y es cómo se escriben generalmente las aplicaciones de Androide. Usted podría hacer algo como esto por ejemplo:

setContentView(...); MySurfaceView v = findViewById(R.id.theusrface); TextView t = findViewById(R.id.thecontent); v.setContent(v); 

La lógica no debe ir en sus vistas.

Si ya conoce la clase de actividad en la que se encuentra su vista, es decir, MyActivity, puede utilizar el miembro estático MyActivity.this desde dentro de su vista y sus oyentes, como en el ejemplo siguiente:

 AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Are you sure you want to exit?") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { MyActivity.this.finish(); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create(); 

que he encontrado en este tutorial de Android:

http://developer.android.com/guide/topics/ui/dialogs.html

Funcionó maravillas para mí.

PJ_Finnegan

  • ¿En qué caso se devuelve bindService?
  • ¿Cómo puedo llamar a getContentResolver en android?
  • Context.getSystemService () es una llamada costosa?
  • SQlite Database: No se puede encontrar el contexto
  • GetActivity () devuelve null en la función Fragmento
  • Android Intent Context Confusing
  • Contexto dentro de un Runnable
  • Llamada getString (R.strings ...) de la clase?
  • Cómo obtener el contexto de BaseAdapter en Android
  • Cómo hacer referencia a la actividad actual o principal de otra clase
  • Cómo iniciar una actividad desde un diálogo en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.