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:

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?

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

  • ¿Cómo se muestra un NumberPicker de 2 dígitos en android?
  • Razón por la cual el atributo style no utiliza el prefijo android: namespace
  • Fondo transparente en ImageButton con efecto de ondulación?
  • ¿Qué sucede si la minSdkVersion es menor que la targetSdkVersion?
  • Implementación de múltiples fragmentos en una sola actividad Dinámicamente
  • Fondo de menú Android negro con Theme.AppCompat?
  • Permiten a los usuarios crear formularios dentro de la aplicación android survey / data collection
  • Android: ListView no muestra ningún resultado
  • ¿Cómo agregar la imagen en un texto de TextView?
  • Cambiar el color de la barra de notificación
  • Crear una DialogPreference desde XML
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.