4

I am new to developing Android. After writing my code and running the debugger, My app cannot be opened and it says "Unfortunately App has stopped".

Here is my stack trace.

07-19 14:16:07.562 10834-10834/com.afiqah.fyp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.afiqah.fyp, PID: 10834
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.afiqah.fyp/com.afiqah.fyp.MainActivity}: android.view.InflateException: Binary XML file line #43: Binary XML file line #43: Error inflating class info.hoang8f.widget.FButton
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2434)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
    at android.app.ActivityThread.access$900(ActivityThread.java:153)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5451)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
 Caused by: android.view.InflateException: Binary XML file line #43: Binary XML file line #43: Error inflating class info.hoang8f.widget.FButton
    at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
    at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287)
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
    at com.afiqah.fyp.MainActivity.onCreate(MainActivity.java:17)
    at android.app.Activity.performCreate(Activity.java:6323)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494) 
    at android.app.ActivityThread.access$900(ActivityThread.java:153) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5451) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
 Caused by: android.view.InflateException: Binary XML file line #43: Error inflating class info.hoang8f.widget.FButton
    at android.view.LayoutInflater.createView(LayoutInflater.java:645)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
    at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
    at com.afiqah.fyp.MainActivity.onCreate(MainActivity.java:17) 
    at android.app.Activity.performCreate(Activity.java:6323) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494) 
    at android.app.ActivityThread.access$900(ActivityThread.java:153) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5451) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Constructor.newInstance(Native Method)
    at android.view.LayoutInflater.createView(LayoutInflater.java:619)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
    at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
    at com.afiqah.fyp.MainActivity.onCreate(MainActivity.java:17) 
    at android.app.Activity.performCreate(Activity.java:6323) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494) 
    at android.app.ActivityThread.access$900(ActivityThread.java:153) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5451) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
 Caused by: java.lang.UnsupportedOperationException: Can't convert to color: type=0x5
    at android.content.res.TypedArray.getColor(TypedArray.java:451)
    at info.hoang8f.widget.FButton.parseAttrs(FButton.java:116)
    at info.hoang8f.widget.FButton.<init>(FButton.java:52)
    at java.lang.reflect.Constructor.newInstance(Native Method) 
    at android.view.LayoutInflater.createView(LayoutInflater.java:619) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
    at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
    at com.afiqah.fyp.MainActivity.onCreate(MainActivity.java:17) 
    at android.app.Activity.performCreate(Activity.java:6323) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494) 
    at android.app.ActivityThread.access$900(ActivityThread.java:153) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5451) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

Here is my activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:background="@drawable/back"
tools:context=".MainActivity"
android:layout_height="match_parent">

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="123dp"
    android:orientation="vertical">

    <ImageView
        android:layout_width="321dp"
        android:layout_height="158dp"
        android:contentDescription="TODO"
        android:src="@drawable/logo" />

    <TextView
        android:id="@+id/txtSlogan"
        android:layout_width="match_parent"
        android:layout_height="106dp"
        android:gravity="center"
        android:text="@string/slogan"
        android:textColor="@android:color/black" />

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentStart="true"
    android:layout_marginBottom="15dp"
    android:orientation="horizontal"
    android:weightSum="2">

    <info.hoang8f.widget.FButton
        android:id="@+id/btnSignUp"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:layout_weight="1"
        android:text="Sign Up"
        android:textColor="@android:color/white"
        app:buttonColor="@color/btnSignUp"
        app:cornerRadius="4dp"
        app:shadowColor="@android:color/black"
        app:shadowEnabled="true" />

    <info.hoang8f.widget.FButton
        android:id="@+id/btnSignIn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:layout_weight="1"
        android:text="Sign In"
        android:textColor="@android:color/white"
        app:buttonColor="@color/btnSignActive"
        app:cornerRadius="4dp"
        app:shadowColor="@android:color/black"
        app:shadowEnabled="true" />

</LinearLayout>

Here is my AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

And here is my MainActivity.java

    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){

            }
        });
    }
}

Does anyone know where my problem is? I need to solve it because this is my final year project.

InsaneCat
  • 2,115
  • 5
  • 21
  • 40
Little Potato
  • 65
  • 1
  • 10

3 Answers3

1
<info.hoang8f.widget.FButton
    android:id="@+id/btnSignUp"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_margin="8dp"
    android:layout_weight="1"
    android:text="Sign Up"
    android:textColor="@android:color/white"
    // app:buttonColor="@color/btnSignUp"
    app:cornerRadius="4dp"
    app:shadowColor="@android:color/black"
    app:shadowEnabled="true" />

Remove app:buttonColor line and try again

OR

you can follow this steps

1. prest Ctrl+Alt+Shift+S
2. Select project
3. Change gradle Version to -> 3.3
4. change Android PLugin version to -> 2.3.3

that work for me

also thats alternate library available https://github.com/jd-alexander/android-flat-button

InsaneCat
  • 2,115
  • 5
  • 21
  • 40
Vinay Rathod
  • 1,262
  • 1
  • 10
  • 19
  • I have changed gradle version and android plugin but once I build and sync it shows this error. Gradle DSL method not found: 'google()' Possible causes:
    • The project 'FYP' may be using a version of the Android Gradle plug-in that does not contain the method (e.g. 'testCompile' was added in 1.1.0). Upgrade plugin to version 3.1.0 and sync project
    • The project 'FYP' may be using a version of Gradle that does not contain the method. Open Gradle wrapper file
    • The build file may be missing a Gradle plugin. Apply Gradle plugin
    – Little Potato Jul 19 '18 at 06:45
1

You cannot save an info.hoang8f.widget.FButton in a simple Button use the one provided with the library like this.

info.hoang8f.widget.FButton  btnSignIn, btnSignUp;
btnSignIn = (FButton) findViewById(R.id.btnSignIn)

You dont acutally need the complete package i only used it for reference just import the package

Unrealshadow
  • 90
  • 10
1

LATEST UPDATE:

I think i found the answer, tho i havnt tested it out but its a more recent commit, and people have testified to it working see jd-alexander's comment here,

https://github.com/hoang8f/android-flat-button/issues/41#issuecomment-350491965

also, see the modified repo for hoang8f's flat android button here

https://github.com/jd-alexander/android-flat-button

incase you're a bit confused on how to implement it, you can see panpan1997's comment here

https://github.com/hoang8f/android-flat-button/issues/41#issuecomment-375702859

END

OLD POST BEGINS HERE

I believe youre following the "Eat-it" app tutorial on youtube. i faced the same challenge, and i also suspected as much that it had something to do with the

info.hoang8f.widget.FButton

what i tried was going into my gradle file(app) and commenting out the the call to that api, also changing every occurence of it within the app to Button from info.hoang8f.widget.FButton so that i can work without the button and no more errors from it.

also check your styles.xml file if there's an error with "Theme", if there's none, try to inspect the code. it should show you if any of your files throws any errors.

if all else fails check here Error inflating class info.hoang8f.widget.FButton

you may need to change your gradle version if you are using android studio v3 your gradle version too will appear as 3, so you can downgrade it in build.gradle (Project) file, like:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
Kingston Fortune
  • 905
  • 8
  • 17
  • yes, I followed the tutorial. how you 'commenting out the call to that api, also changing every occurence of it within the app to Button from info.hoang8f.widget.FButton' – Little Potato Jul 19 '18 at 07:39
  • and how you fix the 'theme' error at styles.xml file? @Kingston Fortune – Little Potato Jul 19 '18 at 07:39
  • Commenting it out is just part of the debugging process, I just commented out the call i made to the api by using // *the name of the library here* also deleted every occurence of it from the xml layout files and changing them to the normal android – Kingston Fortune Jul 19 '18 at 07:45
  • I am yet to solve the theme error myself, some answers on stackoverflow suggest the gradle files are cached and android studio is all confused and mixed up, what you can simply do is delete the .gradle folder and also goto File>invalidate and restart – Kingston Fortune Jul 19 '18 at 07:53