Search code examples
androidbackarrow-functions

Arrow Up in toolbar no back


I want to add the arrow that returns me to my parent class, main activity, I have added a toolbar using material design. it is supposed to work only adding this code in the second activity

 getSupportActionBar().setDisplayHomeAsUpEnabled(true);

but when I do that it doesn't open the app and I get the following error

06-30 15:04:57.869 11854-11854/com.niccode.pets W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41786930)
06-30 15:04:57.879 11854-11854/com.niccode.pets E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.niccode.pets/com.niccode.pets.Favorites}: java.lang.NullPointerException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
        at android.app.ActivityThread.access$600(ActivityThread.java:141)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5041)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
        at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
        at com.niccode.pets.Favorites.onCreate(Favorites.java:14)
        at android.app.Activity.performCreate(Activity.java:5131)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1090)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)

So i added the toolbar inside the xml and in java file. But now the date is shown, but it doesn't return me to my parent file main activity

Thank you

package com.niccode.pets;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import android.os.Bundle;

public class Favorites extends AppCompatActivity {

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

        Toolbar mybar = (Toolbar) findViewById(R.id.my_toolbar);
        setSupportActionBar(mybar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);




    }


}

xml second activity

<androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Favorites">
<include android:id="@+id/my_toolbar" layout="@layout/toolbar"/>
</androidx.constraintlayout.widget.ConstraintLayout>

Manifiest file

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.niccode.pets">

    <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>
        <activity android:name=".Favorites"
            android:parentActivityName=".MainActivity">

            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".MainActivity"
                >

            </meta-data>
        </activity>
    </application>

</manifest>

pressing the arrow does nothing


Solution

  • After this piece of code :

    setSupportActionBar(mybar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    

    Add a navigation onclick listener :

    mybar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
    });