Вопрос или проблема
Кто-нибудь может помочь мне, пожалуйста?
Я начинающий.
ЛОГИ :
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
.
Возможные решения проблемы
-
Проверьте атрибуты в 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 определен --> />
-
Проверьте зависимости:
Убедитесь, что вы добавили все необходимые зависимости библиотекиFButton
в файлbuild.gradle
вашего проекта. Пример:implementation 'info.hoang8f:widget:1.0.0' // проверьте актуальную версию
-
Исправьте инициализацию кнопок:
Если вы используете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
. -
Обратите внимание на версии SDK:
Иногда используемые библиотеки могут не поддерживать определенные версии Android SDK. Убедитесь, что вы используете совместимую версию:compileSdkVersion 30 // или выше
-
Проверьте наличие шрифтов:
Также убедитесь, что ваш шрифтNabila.ttf
правильно загружен в папкуassets/fonts/
. Ошибка загрузки шрифта может привести к сбоему при установлении типа дляTextView
. -
Скрипты миграции:
Проверьте, не изменялась ли структура проекта. Например, если вы перетаскивали файлы или папки, это могло вызвать проблемы с путями к ресурсам.
Заключение
После выполнения перечисленных шагов у вас есть хорошие шансы исправить возникшую ошибку InflateException
в вашем приложении. Если после всех этих действий проблема не будет решена, рекомендуем подробно изучить документацию используемой библиотеки и тщательно проверить все атрибуты, используемые в XML.