E/AndroidRuntime: ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: main

Вопрос или проблема

Кто-нибудь может помочь мне, пожалуйста?
Я начинающий.

ЛОГИ :

E/AndroidRuntime: ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: main
Процесс: com.example.ghaas.androideatit, PID: 5835
java.lang.RuntimeException: Невозможно запустить активность ComponentInfo{com.example.ghaas.androideatit/com.example.ghaas.androideatit.MainActivity}: android.view.InflateException: Бинарный XML файл, строка #38: Бинарный XML файл, строка #38: Ошибка при раздувании класса info.hoang8f.widget.FButton
    в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
    в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
    в android.app.ActivityThread.-wrap11(Неизвестный источник:0)
    в android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
    в android.os.Handler.dispatchMessage(Handler.java:105)
    в android.os.Looper.loop(Looper.java:164)
    в android.app.ActivityThread.main(ActivityThread.java:6541)
    в java.lang.reflect.Method.invoke(Нативный метод)
    в com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
 Причина: android.view.InflateException: Бинарный XML файл, строка #38: Бинарный XML файл, строка #38: Ошибка при раздувании класса info.hoang8f.widget.FButton
 Причина: android.view.InflateException: Бинарный XML файл, строка #38: Ошибка при раздувании класса info.hoang8f.widget.FButton
 Причина: java.lang.reflect.InvocationTargetException
    в java.lang.reflect.Constructor.newInstance0(Нативный метод)
    в java.lang.reflect.Constructor.newInstance(Constructor.java:334)
    в android.view.LayoutInflater.createView(LayoutInflater.java:647)
    в android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
    в android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
    в android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
    в android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
    в android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
    в android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
    в android.view.LayoutInflater.inflate(LayoutInflater.java:515)
    в android.view.LayoutInflater.inflate(LayoutInflater.java:423)
    в android.view.LayoutInflater.inflate(LayoutInflater.java:374)
    в android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287)
    в android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
    в com.example.ghaas.androideatit.MainActivity.onCreate(MainActivity.java:19)
    в android.app.Activity.performCreate(Activity.java:6975)
    в android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
    в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
    в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
    в android.app.ActivityThread.-wrap11(Неизвестный источник:0)
    в android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
    в android.os.Handler.dispatchMessage(Handler.java:105)
    в android.os.Looper.loop(Looper.java:164)
    в android.app.ActivityThread.main(ActivityThread.java:6541)
    в java.lang.reflect.Method.invoke(Нативный метод)
    в com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
 Причина: java.lang.UnsupportedOperationException: Невозможно преобразовать значение по индексу 1 в цвет: тип=0x5
    в android.content.res.TypedArray.getColor(TypedArray.java:473)
    в info.hoang8f.widget.FButton.parseAttrs(FButton.java:116)
    в info.hoang8f.widget.FButton.<init>(FButton.java:52)
    в java.lang.reflect.Constructor.newInstance0(Нативный метод) 

MainActivity.java

    package com.example.ghaas.androideatit;

import android.graphics.Typeface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    Button btnSignIn,btnSignUp;
    TextView txtSlogan;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnSignIn = (Button)findViewById(R.id.btnSignIn);
        btnSignUp = (Button)findViewById(R.id.btnSignUp);

        txtSlogan = (TextView)findViewById(R.id.txtSlogan);
        Typeface face = Typeface.createFromAsset(getAssets(),"fonts/Nabila.ttf");
        txtSlogan.setTypeface(face);

        btnSignIn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        });

        btnSignUp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        });

    }
}

Как я могу исправить эту проблему?

С уважением,

Попробуйте заменить это:

btnSignIn = (Button)findViewById(R.id.btnSignIn);
btnSignUp = (Button)findViewById(R.id.btnSignUp);

на:

btnSignIn = (FButton)findById(R.id.btnSignIn);
btnSignUp = (FButton)findById(R.id.btnSignUp);

Ответ или решение

Ошибка, с которой вы столкнулись — это FATAL EXCEPTION: main, которая возникает при запуске вашего приложения Android. Рассмотрим проблему более детально, чтобы понять, что не так, и как это исправить.

Причина ошибки

На основе предоставленного лога ошибок, мы видим, что главной причиной сбоя является android.view.InflateException, связанная с неправильной инициализацией пользовательского компонента FButton из библиотеки info.hoang8f.widget. Это происходит на строке 38 вашего файла разметки XML, где вы, вероятно, используете этот класс.

Согласно логам, ошибка вызвана вызовом метода getColor на объекте TypedArray, что указывает на проблему с одним из стилей или атрибутов, который был применен к FButton.

Возможные решения проблемы

  1. Проверьте атрибуты в XML:
    Убедитесь, что все атрибуты, которые вы используете для FButton, корректно определены и совместимы с библиотекой. Сравните ваши атрибуты с документацией библиотеки FButton и убедитесь, что вы не используете неподдерживаемые атрибуты.

    Например:

    <info.hoang8f.widget.FButton
       android:id="@+id/btnSignIn"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       app:fbutton_backgroundColor="@color/colorAccent" <!-- Убедитесь, что colorAccent определен -->
       />
  2. Проверьте зависимости:
    Убедитесь, что вы добавили все необходимые зависимости библиотеки FButton в файл build.gradle вашего проекта. Пример:

    implementation 'info.hoang8f:widget:1.0.0' // проверьте актуальную версию
  3. Исправьте инициализацию кнопок:
    Если вы используете FButton, замените:

    btnSignIn = (Button)findViewById(R.id.btnSignIn);
    btnSignUp = (Button)findViewById(R.id.btnSignUp);

    На:

    btnSignIn = (FButton)findViewById(R.id.btnSignIn);
    btnSignUp = (FButton)findViewById(R.id.btnSignUp);

    Это обеспечит правильную инициализацию кнопок как экземпляров FButton.

  4. Обратите внимание на версии SDK:
    Иногда используемые библиотеки могут не поддерживать определенные версии Android SDK. Убедитесь, что вы используете совместимую версию:

    compileSdkVersion 30 // или выше
  5. Проверьте наличие шрифтов:
    Также убедитесь, что ваш шрифт Nabila.ttf правильно загружен в папку assets/fonts/. Ошибка загрузки шрифта может привести к сбоему при установлении типа для TextView.

  6. Скрипты миграции:
    Проверьте, не изменялась ли структура проекта. Например, если вы перетаскивали файлы или папки, это могло вызвать проблемы с путями к ресурсам.

Заключение

После выполнения перечисленных шагов у вас есть хорошие шансы исправить возникшую ошибку InflateException в вашем приложении. Если после всех этих действий проблема не будет решена, рекомендуем подробно изучить документацию используемой библиотеки и тщательно проверить все атрибуты, используемые в XML.

Оцените материал
Добавить комментарий

Капча загружается...