El componente personalizado de Android funciona bien en tiempo de ejecución, pero no funciona en tiempo de diseño
Estoy haciendo mis primeros pasos en el desarrollo de Android. Mientras tanto, estoy tratando de crear un componente personalizado (para fines de prueba) que más tarde se utilizará en una actividad.
Aquí está el código de ClearableEditText.java:
- Nuevo patrón de diseño de la actividad de Android Studio content_main.xml
- Declaración de espacio de nombres Xml: auto-substitute package name
- Por qué el flag isLockTaskPermitted es falso
- Configurar la altura y el ancho del diálogo personalizado
- Temas de Android: Defina colores / degradados en "baseTheme.xml", use dentro de controles, reemplace en "subThemeX.xml"
import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; public class ClearableEditText extends LinearLayout { private EditText textField; private Button button; public ClearableEditText(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onFinishInflate() { super.onFinishInflate(); LayoutInflater.from(this.getContext()).inflate(R.layout.clearable_text, this); setupViewItems(); } private void setupViewItems() { // TODO Auto-generated constructor stub this.textField = (EditText) findViewById(R.id.editText1); this.button = (Button) findViewById(R.id.button1); this.textField.setText("Hello World 123"); } }
Y aquí está su archivo XML de diseño:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" > <requestFocus /> </EditText> <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout>
Este es el código de diseño XML para la actividad que integrará el componente:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".SegundaActivity" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/ativity2_text" /> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView1" android:layout_centerHorizontal="true" android:layout_marginTop="33dp" android:ems="10" > <requestFocus /> </EditText> <com.example.aplicacaoteste.ClearableEditText android:id="@+id/newComponent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/editText1" android:layout_centerHorizontal="true" android:layout_marginTop="33dp" android:ems="10" > </com.example.aplicacaoteste.ClearableEditText> </RelativeLayout>
Cuando ejecuto la aplicación, el componente funciona bien. No obstante, tan pronto como cambie a la disposición gráfica de mi actividad, consigo el mensaje de error siguiente:
java.lang.NullPointerException Exception details are logged in Window > Show View > Error Log java.lang.NullPointerException at com.example.aplicacaoteste.ClearableEditText.setupViewItems(ClearableEditText.java:36) at com.example.aplicacaoteste.ClearableEditText.onFinishInflate(ClearableEditText.java:26) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:754) at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64) at android.view.LayoutInflater.rInflate(LayoutInflater.java:718) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:749) at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64) at android.view.LayoutInflater.rInflate(LayoutInflater.java:718) at android.view.LayoutInflater.inflate(LayoutInflater.java:489) at android.view.LayoutInflater.inflate(LayoutInflater.java:372)
No tengo ni idea de lo que está pasando aquí. ¿Puede alguien ayudarme?
- String-array dentro de string-array
- Establecer android: windowIsFloating programmatically
- Crear bordes en una vista de androide en xml dibujable, en 3 lados?
- Error: (3) Error al analizar XML: no bien formado (token no válido)
- Pregunta la ayuda sobre el problema de lectura de AndroidManifest.xml
- Efectos de transición de la actividad: deslice hacia la actividad superior y la escala para la actividad de la parte inferior
- Crear vista dinámica, múltiples vistas X veces, obtener / establecer valor para cada grupo
- Utilizar un prefijo de espacio de nombres no androide en elementos secundarios en un diseño
Este código fuente funciona perfectamente. Este es mi código fuente
package com.testapplication.customtools; import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; public class ClearableEditText extends LinearLayout{ private EditText textField; private Button button; public ClearableEditText(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onFinishInflate() { super.onFinishInflate(); LayoutInflater.from(this.getContext()).inflate(R.layout.clearable_text, this); setupViewItems(); } private void setupViewItems() { // TODO Auto-generated constructor stub this.textField = (EditText) findViewById(R.id.editText1); this.button = (Button) findViewById(R.id.button1); this.textField.setText("Hello World 123"); } }
Esta es mi actividad principal xml Files
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".SegundaActivity" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="test" /> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView1" android:layout_centerHorizontal="true" android:layout_marginTop="33dp" android:ems="10" > <requestFocus /> </EditText> <com.testapplication.customtools.ClearableEditText android:id="@+id/newComponent" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/editText1" android:layout_centerHorizontal="true" android:layout_marginTop="33dp" android:ems="10" > </com.testapplication.customtools.ClearableEditText> </RelativeLayout>
No estoy recibiendo ninguna excepción. compruebe el nombre del paquete
- Icono de cambio barra de acciones según el perfil seleccionado
- Cómo jugar rtsp live stream desde android? (Rtsp: // someserver: port / live / 001204A006F5.stream)