type layoutcontainer failed extensions experimental activity_main android nullpointerexception fragment relativelayout findviewbyid

android - layoutcontainer - NullPointerException al acceder a RelativeLayout desde una vista personalizada



textview kotlin (2)

Soy relativamente nuevo en Android y estoy totalmente atascado en cómo acceder a mi Distribución relativa definida por programa (definida en un fragmento) en mi Vista personalizada.

En el fragmento, esto es lo que tengo:

... @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment1, container,false); RelativeLayout rl1 = new RelativeLayout(view.getContext()); TextView tView1 = new TextView(view.getContext()); tView1.setText("test"); rl1.addView(tView1); rl1.setId(1); tView1.setId(2); ... }

Luego, en la vista personalizada, invoco el diseño relativo y TextView por id. Cuando trato de hacer algo, obtengo una excepción NullPointer.

... RelativeLayout rl1 = (RelativeLayout) findViewById(1); TextView tView1 = (TextView) findViewById(2); tView1.getText();

El código anterior muestra el intento de .getText() en TextView, pero cualquier cosa que haga a RelativeLayout también provoca una excepción NullPointer.

Entonces, básicamente, parece que no estoy encontrando RelativeLayout y TextViews correctamente. FYI, ya he visto esta pregunta similar , pero no se aplica aquí, mis constructores ya están configurados adecuadamente.


Debería agregar el Diseño a la Vista principal, sin embargo, debe convertirlo primero en un Diseño:

YourLayout view = (YourLayout) inflater.inflate(R.layout.fragment1, container,false); RelativeLayout rl1 = new RelativeLayout(view.getContext()); TextView tView1 = new TextView(view.getContext()); tView1.setText("test"); rl1.addView(tView1); rl1.setId(1); tView1.setId(2); view.addView (rl1);//add rl1 to the main View

Luego, para acceder, si está trabajando fuera, onCreateView() y onCreateView() ya se ha llamado:

RelativeLayout rl1 = (RelativeLayout) getView().findViewById(1); TextView tView1 = (TextView) rl1.findViewById(2); tView1.getText();

Si aún intenta acceder a las vistas en onCreateView() , findViewById() no importa; ya tiene las referencias de sus vistas, así que findViewById() .

También vale la pena señalar que se puede agregar oyentes y onCreateView() en onCreateView() para actualizar la interfaz de usuario, por lo que es posible que pueda simplemente un poco las cosas.


Tiene que agregar su diseño relativo a su grupo de diseño ... Y desde la vista principal de su diseño, puede acceder a su diseño relativo y sus elementos secundarios