Usando findviewbyid en una clase que NO extiende Actividad en android

Tengo una clase que actualmente está extendiendo la actividad y tengo métodos como findViewById, ArrayAdapter, etc Quiero convertirlo en una clase independiente, pero todos los métodos anteriores se convierten en indefinido. ¿Cuál es el problema? ¿No sería suficiente importar las clases? Por ejemplo, importar android.view.View para findViewById, pero todavía no hace ninguna diferencia. Por favor avise.

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

En tu Activity Instanciate tu clase así:

 MyClass instance = new MyClass(this); 

Y en su 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 quiera usar el método findViewById() , puede hacer lo siguiente:

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

Si desea llamar a cualquier función que pertenezca a la Activity entonces lo único que necesita 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 sólo está disponible para un objeto de Activity . Por lo tanto, importe android.view.View y android.app.Activity no lo hará disponible. Para hacerla disponible, usted podría pasar alrededor de un objeto de la Actvity – generalmente un this punto en su actividad. Sin embargo, tenga en cuenta que siempre debe actualizar su vista en el subproceso de interfaz de usuario.

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); 
  • (Barra de herramientas) findViewById (R.id.tool_bar) devuelve NULL
  • FindViewById devuelve null - Android - setContentView
  • Resultado del molde findViewById android method
  • No se puede resolver el método 'findViewById (int)'
  • ¿Por qué obtener NoSuchFiledException al usar otro proyecto android como biblioteca?
  • FindViewById (int) devuelve null en un botón específico en Android 3.1 otras versiones su multa
  • Cómo hacer un findViewById (R.id. >> StringVarHere <<)?
  • Fragmento de Android: findViewById devuelve null
  • Cómo inflar correctamente un diseño con un ViewFlipper anidado?
  • FindViewById devuelve el elemento erróneo?
  • Puntero nulo Excepción - findViewById ()
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.