support materialbutton inflating google error edittext constraintlayout constraint bottomnavigation android view inflate

android - materialbutton - Error al inflar la vista de clase interna



error inflating class edittext (1)

Intento inflar una vista de clase interna y obtener el problema de "clase infladora de errores". Hice referencia a esta publicación que fue útil, pero todavía estoy perdido en cuanto a por qué no puedo hacer que esto funcione.

Aquí hay un fragmento de código, mi XML y logcat.

Editar: También noté que Logcat establece una "excepción de método no similar" para "CupcakeMessageView (Context, AttributeSet) cuando claramente lo tengo.

¡GRACIAS A TODOS!

public class CupcakeMessage extends Activity { class CupcakeMessageView extends View { private static final int TEXT_SIZE = 12; private static final int X_OFFSET = 15; private Paint mPaint; public CupcakeMessageView(Context context) { super(context); } public CupcakeMessageView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; ... } more class stuff... } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.cupcake_message); ... } }

Aquí está el XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <view class="com.cmllc.zcc.CupcakeMessage$CupcakeMessageView" android:id="@+id/cupcake_message_view" android:screenOrientation="portrait" android:layout_width="wrap_content" android:layout_height="wrap_content" /> more views...

Logcat:

12-19 09:31:24.249: ERROR/AndroidRuntime(5435): FATAL EXCEPTION: main 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cmllc.zcc/com.cmllc.zcc.CupcakeMessage}: android.view.InflateException: Binary XML file line #7: Error inflating class com.cmllc.zcc.CupcakeMessage$CupcakeMessageView 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at android.os.Handler.dispatchMessage(Handler.java:99) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at android.os.Looper.loop(Looper.java:123) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at android.app.ActivityThread.main(ActivityThread.java:4627) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at java.lang.reflect.Method.invokeNative(Native Method) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at java.lang.reflect.Method.invoke(Method.java:521) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at dalvik.system.NativeStart.main(Native Method) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class com.cmllc.zcc.CupcakeMessage$CupcakeMessageView 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at android.view.LayoutInflater.createView(LayoutInflater.java:503) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at android.view.LayoutInflater.rInflate(LayoutInflater.java:618) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at android.view.LayoutInflater.inflate(LayoutInflater.java:407) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at android.app.Activity.setContentView(Activity.java:1647) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at com.cmllc.zcc.CupcakeMessage.onCreate(CupcakeMessage.java:119) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): ... 11 more 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): Caused by: java.lang.NoSuchMethodException: CupcakeMessageView(Context,AttributeSet) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at java.lang.Class.getMatchingConstructor(Class.java:660) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at java.lang.Class.getConstructor(Class.java:477) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): at android.view.LayoutInflater.createView(LayoutInflater.java:475) 12-19 09:31:24.249: ERROR/AndroidRuntime(5435): ... 21 more


Necesita agregar public static a la clase interna.

  • public porque necesita ser visible desde el exterior.
  • static porque si no, necesitarás tener CupcakeMessage para instanciarlo.

De todos modos, recomendaría hacer la View en una clase separada.