¿Cómo acceder a la IU de actividad de mi clase?

Tengo una actividad que crea una instancia de objeto de mi clase:

file MyActivity.java: public class MyActivity extends Activity { TextView myView = (TextView)findViewById(R.id.myView); ... Points myPoints new Points(); ... } -------------------------------------------------------------- file Points.java: private class Points { ... HOW TO USE myView HERE ??? ... } -------------------------------------------------------------- 

¿Cómo utilizo los objetos UI en mi clase (que no amplía una Actividad)? ¿Debo pasar algo de contexto a mi clase Puntos? ¿Cómo lo hago, exactamente?

veo tu publicación, la he editado, para solucionar el problema

Espero que ayude: =)

aquí está la Edición:

 file MyActivity.java: public class MyActivity extends Activity { TextView myView ; protected void onCreate(android.os.Bundle savedInstanceState) { myView = (TextView)findViewById(R.id.myView); Points myPoints = new Points(this); myPoints.displayMsg("Hello World !!!"); } } -------------------------------------------------------------- file Points.java: private class Points { protected MyActivity context; //add a constructor with the Context of your activity public Points(MyActivity _context){ context = _context; } public void displayMsg( final String msg){ context.runOnUiThread(new Runnable() { @Override public void run() { context.myView.setText(msg); } }); } } 
  1. Tus Points no pueden ser una clase privada sin ser una clase interna. Entonces tu código ni siquiera comstack …
  2. Pase la vista como parámetro al constructor de su clase Points :

     public class MyActivity extends Activity { TextView myView = (TextView)findViewById(R.id.myView); Points myPoints new Points(myView); private class Points { public Points(TextView view) { // todo } } } 

Debería hacer todo y devolver el valor a la actividad para manejar la IU en lugar de hacer cosas relacionadas con la interfaz de usuario en los puntos.

Puede pasar el contexto de la actividad principal (usando Points(getApplicationContext()); ) a la clase como un parámetro de constructor. También puede pasar los elementos de IU específicos que desea manipular.

Una mejor forma de hacerlo, sin embargo, puede ser que los Points no sepan sobre la Actividad. Tenga sus métodos de Points llamada de actividad y tome las medidas necesarias según el resultado del método.

Podrías pasar la vista a tu clase.

 Points myPoints = new Points(myView); private class Points { private TextView mTextView; Points(TextView textView) { this.mTextView = textView; } } 

estaba en el mismo problema … encontré la manera simple …

  1. hacer una variable estática y función …
  2. llamada de otra clase ..

TestActivity.java

 public class TestActivity extends Activity { static EditText edit_text1; public void onCreate(Bundle savedInstanceState) { ..... edit_text1 = (EditText) findViewById(R.id.edit_text1); ..... } public static void setMSG(String str) { edit_text1.setText(str); } } 

Test2.java

 TestActivity.setMSG("this is text");