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); 
  • Resultado del molde findViewById android method
  • Android: un método findViewById () que devuelve valores que no necesitamos emitir
  • Fragmento de Android: findViewById devuelve null
  • Puntero nulo Excepción - findViewById ()
  • FindViewById (int) devuelve null en un botón específico en Android 3.1 otras versiones su multa
  • FindViewById en una vista personalizada para encontrar la vista secundaria
  • FindViewById dentro de un método estático
  • Cómo encontrar id de diseño en un botón de mapa de bits java fuente que he hecho
  • Intenta invocar el método virtual 'android.view.Window $ Callback android.view.Window.getCallback ()' en una referencia de objeto nulo
  • ¿Cómo puedo encontrar el ID de un fragmento? Alternativamente, ¿cómo doy al fragmento una identificación?
  • Cómo hacer un findViewById (R.id. >> StringVarHere <<)?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.