vida studio onstop example developers created ciclo activity android class android-activity findviewbyid

studio - usando findviewbyid en una clase que NO extiende Activity en android



onstart android example (4)

Tengo una clase que actualmente amplía Activity y tengo métodos como findViewById, ArrayAdapter, etc. Quiero convertirlo en una clase independiente, pero todos los métodos anteriores no están definidos. ¿Cuál es el problema? ¿No debería ser suficiente importar las clases? Por ejemplo, importo android.view.View para findViewById pero aún no hace diferencia. Por favor avise.


Por favor intenta lo siguiente:

public static View getLayoutByRes(@LayoutRes int layoutRes,@Nullable ViewGroup viewGroup) { final LayoutInflater factory = getSystemService(Context.LAYOUT_INFLATER_SERVICE); return factory.inflate(layoutRes, viewGroup); } TextView tv = (TextView) getLayoutByRes(R.layout.xxx ,Null).findViewById(R.id.editd);


debe pasar la instancia de su actividad a su segunda clase en el constructor de esta manera:

En tu Activity instala tu clase de esta manera:

MyClass instance = new MyClass(this);

Y en tu segunda clase, el constructor será así:

public class MyClass { public Activity activity; //.... other attributes public MyClass( Activity _activity){ this.activity = _activity; //other initializations... } }

y luego, cuando desee usar el método findViewById() , puede hacer esto:

EditText txt = (EditText)this.activity.findViewById(R.id.txt);


si desea llamar a cualquier función que pertenece a Activity entonces lo único que debe tener es el contexto de la Activity .

p.ej.

class A extends Activity{ Context ctx; void oncreate(Bundle b) ctx = this; B bob = new B(ctx); } }

Aquí está la clase B.

Class B { B(Activity a) { a.anyFunctionOfActivity(); } }


findViewById es un método público no estático de la clase de Activity , por lo que solo estará disponible para un objeto Activity . Por lo tanto, importar android.view.View y android.app.Activity no lo hará disponible. Para que esté disponible, puede pasar alrededor de un objeto de Actvity , generalmente en this punto de su actividad. Sin embargo, tenga en cuenta que siempre debe actualizar su Vista en el hilo de la interfaz de usuario.