Wyświetl strzałkę wstecz na pasku narzędzi


496

Jestem migracji z ActionBardo Toolbarw mojej aplikacji. Ale nie wiem, jak wyświetlać i ustawiać zdarzenie kliknięcia na Wstecznej strzałce Toolbartak jak ja Actionbar.

wprowadź opis zdjęcia tutaj

Z ActionBardzwonię mActionbar.setDisplayHomeAsUpEnabled(true). Ale nie ma podobnej metody takiej jak ta.

Czy ktoś kiedykolwiek zmierzył się z tą sytuacją i jakoś znalazł sposób na jej rozwiązanie?



Skorzystaj z przykładu getSupportActionBar () tutaj freakyjolly.com/how-to-add-back-arrow-in-android-activity
Code Spy

Odpowiedzi:


900

Jeśli używasz ActionBarActivity, możesz nakazać systemowi Android, aby używał tego Toolbarw ActionBarpodobny sposób:

Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);

A potem dzwoni do

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);

będzie działać. Możesz również użyć tego w dołączonych fragmentach, ActionBarActivitiesmożesz użyć tego w następujący sposób:

((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);

Jeśli nie używasz ActionBarActivitieslub chcesz uzyskać strzałkę wstecz na Toolbarnie ustawionym jako twój SupportActionBar, możesz użyć następujących czynności:

mActionBar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_action_back));
mActionBar.setNavigationOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
       //What to do on back clicked
   }
});

Jeśli używasz android.support.v7.widget.Toolbar, dodaj następujący kod do AppCompatActivity:

@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}


70
Jeśli używasz najnowszej wersji appcompat-v7 (21.0.3 lub nowszej), możesz użyć R.drawable.abc_ic_ab_back_mtrl_am_alpha do rysowania strzałki wstecz, która jest zawarta w bibliotece wsparcia.
Taeho Kim

23
Pamiętaj, że getResources (). GetDrawable (...) jest przestarzały. Zamiast tego należy użyć ContextCompat.getDrawable (kontekst, ...).
Quentin S.

7
Nie działa, nie mogę znaleźć ani R.drawable.abc_ic_ab_back_mtrl_am_alphajednego R.drawable.ic_action_back.
Henrique de Sousa

10
dostać ikonę „z powrotem” z biblioteki wsparcia toolbar.setNavigationIcon(android.support.v7.appcompat.R.drawable.abc_ic_ab_back_material);
Bolein95

215

Widzę wiele odpowiedzi, ale tutaj jest moja, o której wcześniej nie wspomniano. Działa z API 8+.

public class DetailActivity extends AppCompatActivity

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

    // toolbar
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    // add back arrow to toolbar
    if (getSupportActionBar() != null){
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // handle arrow click here
    if (item.getItemId() == android.R.id.home) {
        finish(); // close this activity and return to preview activity (if there is any)
    }

    return super.onOptionsItemSelected(item);
}

3
Działa to tylko po ustawieniu paska narzędzi jako paska działań. Nie dotyczy samodzielnych pasków narzędzi.
Kuffs

20
Głosowanie za onOptionItemSelected()Uzupełnia to, czego MrEngineer13 nie ujął w swojej odpowiedzi.
Atul

2
Dzięki, że to działało dla mnie. Wydaje się być lepszy niż korzystanie z programu do nasłuchiwania kliknięć, tak naprawdę nie dbam o samodzielne paski narzędzi
Mike76,

Jak mogę zmienić kolor strzałki?
Dmitry

Nie potrzebowałem linii w wierszu komentarza „paska narzędzi”, działa dobrze.
Hack06

173

Jest na to wiele sposobów, oto mój ulubiony:

Układ:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:navigationIcon="?attr/homeAsUpIndicator" />

Czynność:

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // back button pressed
        }
    });

13
użycie atrybutu theme jest znacznie lepsze niż większość innych sugestii w tym pytaniu
Pedro Loureiro

3
zamiast używać setNavigationOnClickListener()możesz dodać case android.R.id.home:wewnątrz 'onOptionsItemSelected () `.
eugene

1
case android.R.id.homenie działało dla mnie. więc po pewnym czasie Twoja odpowiedź zadziałała. dzięki.
deejay,

Jest to najbardziej autentyczne rozwiązanie, zwłaszcza jeśli chcesz użyć domyślnej tylnej ikony systemu Android.
Nauman Aslam

using toolbar.setNavigationOnClickListener {onBackPressed ()}
filthy_wizard

74

możesz użyć metody setNavigationIcon na pasku narzędzi. Dokument Android

mToolBar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);

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

1
Czy możesz dodać wyjaśnienie do swojej odpowiedzi? Odpowiedzi tylko w kodzie są mile widziane na SO.
honk

1
Uwaga: metoda setNavigationOnClickListener()została dodana do interfejsu API na poziomie 21 i wyższym
Ali Mehrpour

3
R.drawable.abc_ic_ab_back_mtrl_am_alpha już nie ma w obsłudze 23.2.0, zamiast tego użyj zaakceptowanej odpowiedzi.
Milan

25

Jeśli nie chcesz tworzyć niestandardowego Toolbar, możesz to zrobić w ten sposób

public class GalleryActivity extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        ...  
        getSupportActionBar().setTitle("Select Image");
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            finish();
        }
        return super.onOptionsItemSelected(item);
    }
}                     

W Tobie AndroidManifest.xml

<activity
    android:name=".GalleryActivity"
    android:theme="@style/Theme.AppCompat.Light">        
</activity>

możesz także oznaczyć android:theme="@style/Theme.AppCompat.Light"to <aplication>tagiem, aby zastosować je do wszystkich działań

wprowadź opis zdjęcia tutaj


2
Dzięki zaif (item.getItemId() == android.R.id.home)
Adizbek Ergashev

22
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    toolbar.setNavigationIcon(R.drawable.back_arrow); // your drawable
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed(); // Implemented by activity
        }
    });

I dla API 21+ android:navigationIcon

<android.support.v7.widget.Toolbar
    android:navigationIcon="@drawable/back_arrow"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"/>

Powinna być zaakceptowana odpowiedź.
Anton Malyshev

17

Użyłem tej metody z Dokumentacji programisty Google :

@Override
public void onCreate(Bundle savedInstanceState) {
  ...
  getActionBar().setDisplayHomeAsUpEnabled(true);
}

Jeśli otrzymasz wyjątek wskaźnika zerowego, może to zależeć od motywu. Spróbuj użyć innego motywu w manifeście lub użyj tego alternatywnie:

@Override
public void onCreate(Bundle savedInstanceState) {
  ...
  getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

Następnie w manifeście, w którym ustawiam aktywność nadrzędną dla bieżącej aktywności:

<activity
        android:name="com.example.myapp.MyCurrentActivity"
        android:label="@string/title_activity_display_message"
     android:parentActivityName="com.example.myfirstapp.MainActivity" >
    <!-- Parent activity meta-data to support 4.0 and lower -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.myapp.MyMainActivity" />
</activity>

Mam nadzieję, że to Ci pomoże!


1
Link do google docs i getSupportActionBar()działał. Dzięki!
Rick

15

Jeśli ty były przy użyciu AppCompatActivityi poszły w dół drogi nie jest używany, ponieważ nie chciał, aby uzyskać automatyczne ActionBar, że zapewnia, ponieważ chcemy, aby oddzielić się z Toolbarpowodu swoich potrzeb Materiał projekt i CoordinatorLayoutczy AppBarLayoutzatem rozważyć to:

Nadal możesz używać AppCompatActivity, nie musisz przestać go używać tylko po to, aby móc użyć <android.support.v7.widget.Toolbar>w xml. Po prostu wyłącz styl paska akcji w następujący sposób:

Po pierwsze, uzyskaj styl z jednego z motywów NoActionBar, który lubisz w swoim styles.xml, użyłem go w ten Theme.AppCompat.Light.NoActionBarsposób:

<style name="SuperCoolAppBarActivity" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/primary</item>

    <!-- colorPrimaryDark is used for the status bar -->
    <item name="colorPrimaryDark">@color/primary_dark</item>
    ...
    ...
</style>

W manifeście aplikacji wybierz właśnie zdefiniowany motyw stylu potomnego:

    <activity
        android:name=".activity.YourSuperCoolActivity"
        android:label="@string/super_cool"
        android:theme="@style/SuperCoolAppBarActivity">
    </activity>

W pliku XML aktywności, jeśli pasek narzędzi jest zdefiniowany w następujący sposób:

...
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        />
...

I to jest ważna część, którą ustaliłeś pasek akcji wsparcia na AppCompatActivity, które rozszerzasz, tak aby pasek narzędzi w twoim pliku xml stał się się paskiem akcji. Uważam, że jest to lepszy sposób, ponieważ możesz po prostu robić wiele rzeczy, na które pozwala ActionBar, takich jak menu, automatyczny tytuł aktywności, obsługa wyboru pozycji itp. Bez uciekania się do dodawania niestandardowych programów obsługi kliknięć itp.

W zastąpieniu onCreate działania wykonaj następujące czynności:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_super_cool);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

    setSupportActionBar(toolbar);
    //Your toolbar is now an action bar and you can use it like you always do, for example:
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} 

8
MyActivity extends AppCompatActivity {

    private Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        toolbar = (Toolbar) findViewById(R.id.my_toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        toolbar.setNavigationOnClickListener(arrow -> onBackPressed());
    }

Możesz użyć retrolambda.
Artemiy

to mam i nie działa. nie mogę tego rozgryźć.
filthy_wizard

7

Prosty i łatwy sposób pokazania przycisku Wstecz na pasku narzędzi

Wklej ten kod w metodzie onCreate

 if (getSupportActionBar() != null){

            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setDisplayShowHomeEnabled(true);
        }

Wklej tę metodę zastępowania poza metodą onCreate

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if(item.getItemId()== android.R.id.home) {

        finish();
    }
    return super.onOptionsItemSelected(item);
}

7

W Kotlinie byłoby

private fun setupToolbar(){
    toolbar.title = getString(R.string.YOUR_TITLE)
    setSupportActionBar(toolbar)
    supportActionBar?.setDisplayHomeAsUpEnabled(true)
    supportActionBar?.setDisplayShowHomeEnabled(true)
}

// don't forget click listener for back button
override fun onSupportNavigateUp(): Boolean {
    onBackPressed()
    return true
}


5

Na AppCompatActivityprzykład możesz to zrobić

public class GrandStatActivity extends AppCompatActivity {

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

    @Override
    public void onResume() {
        super.onResume();

        // Display custom title
        ActionBar actionBar = this.getSupportActionBar();
        actionBar.setTitle(R.string.fragment_title_grandstats);

        // Display the back arrow
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }

    // Back arrow click event to go to the parent Activity
    @Override
    public boolean onSupportNavigateUp() {
        onBackPressed();
        return true;
    }

}

4

W pliku manifestu dla działania, do którego chcesz dodać przycisk Wstecz, użyjemy właściwości android: parentActivityName

        <activity
        android:name=".WebActivity"
        android:screenOrientation="portrait"
        android:parentActivityName=".MainActivity"
        />

PS Ten atrybut został wprowadzony na poziomie API 16.


3

To działało idealnie

public class BackButton extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chat_box);
        Toolbar chatbox_toolbar=(Toolbar)findViewById(R.id.chat_box_toolbar);
        chatbox_toolbar.setTitle("Demo Back Button");
        chatbox_toolbar.setTitleTextColor(getResources().getColor(R.color.white));
        setSupportActionBar(chatbox_toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        chatbox_toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //Define Back Button Function
            }
        });
    }
}

3

Najpierw musisz zainicjować pasek narzędzi:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

następnie wywołaj przycisk Wstecz z paska akcji:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);

@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}

2

Jeśli chcesz wyświetlić strzałkę wstecz na pasku narzędzi, który nie jest ustawiony jako pasek SupportActionBar:

(kotlin)

val resId = getResIdFromAttribute(toolbar.context, android.R.attr.homeAsUpIndicator)
toolbarFilter.navigationIcon = ContextCompat.getDrawable(toolbar.context, resId)
toolbarFilter.setNavigationOnClickListener { fragmentManager?.popBackStack() }

aby uzyskać res z atrybutów:

@AnyRes
fun getResIdFromAttribute(context: Context, @AttrRes attr: Int): Int {
    if (attr == 0) return 0
    val typedValueAttr = TypedValue()
    context.theme.resolveAttribute(attr, typedValueAttr, true)
    return typedValueAttr.resourceId
}

1

Dodaj to do xml działania w folderze układu:

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">
    <android.support.v7.widget.Toolbar
        android:id="@+id/prod_toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>

Ustaw klikalny pasek narzędzi, dodaj je do metody onCreate:

Toolbar toolbar = (Toolbar) findViewById(R.id.prod_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        finish();
    }
});

1

Prawdopodobnie bardziej niezawodny sposób na uzyskanie ikony w górę z motywu (jeśli nie używasz paska narzędzi jako paska akcji):

toolbar.navigationIcon = context.getDrawableFromAttribute(R.attr.homeAsUpIndicator)

Aby zmienić atrybut motywu na rysunkowy, użyłem funkcji rozszerzenia:

fun Context.getDrawableFromAttribute(attributeId: Int): Drawable {
    val typedValue = TypedValue().also { theme.resolveAttribute(attributeId, it, true) }
    return resources.getDrawable(typedValue.resourceId, theme)
}

0

Jeśli używasz DrawerLayout z ActionBarDrawerToggle , a następnie, aby wyświetlić przycisk Wstecz zamiast przycisku Menu (i viceversa), musisz dodać ten kod do działania:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // ...

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.application_name, R.string.application_name);
    mDrawerLayout.addDrawerListener(mDrawerToggle);

    mDrawerToggle.setHomeAsUpIndicator(R.drawable.ic_arrow_back_white_32dp);
    mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onBackPressed(); // Or you can perform some other action here when Back button is clicked.
        }
    });
    mDrawerToggle.syncState();
    // ...
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (mDrawerToggle.onOptionsItemSelected(item))
        return true;

    switch (item.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            return true;
        // ...
    }

    return super.onOptionsItemSelected(item);
}

public void showBackInToolbar(boolean isBack) {
    // Remove next line if you still want to be able to swipe to show drawer menu.
    mDrawerLayout.setDrawerLockMode(isBack ? DrawerLayout.LOCK_MODE_LOCKED_CLOSED : DrawerLayout.LOCK_MODE_UNLOCKED);
    mDrawerToggle.setDrawerIndicatorEnabled(!isBack);
    mDrawerToggle.syncState();
}

Więc jeśli chcesz pokazać przycisk Wstecz zamiast przycisku Menu , wywołaj showBackInToolbar (true) , a jeśli potrzebujesz przycisku Menu , wywołaj showBackInToolbar (false) .

Możesz wygenerować strzałkę wstecz (ic_arrow_back_white_32dp) tutaj , wyszukaj arrow_back w sekcji Clipart (użyj domyślnej 32dp z wypełnieniem 8dp). Po prostu wybierz żądany kolor.


0

Zawsze można dodać Relative layoutlub Linear Layoutw twojej Toolbari umieścić widok zdjęcie ikonę plecy lub ikonę Zamknij gdziekolwiek w pasku jak chcesz

Na przykład użyłem układu względnego na pasku narzędzi

 <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar_top"
                android:layout_width="match_parent"
                android:layout_height="35dp"
                android:minHeight="?attr/actionBarSize"
                android:nextFocusDown="@id/netflixVideoGridView"
                app:layout_collapseMode="pin">

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">


                    <TextView

                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Myflix"
                        android:textAllCaps="true"
                        android:textSize="19sp"
                        android:textColor="@color/red"
                        android:textStyle="bold" />


                    <ImageView
                        android:id="@+id/closeMyFlix"
                        android:layout_alignParentRight="true"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        app:srcCompat="@drawable/vector_close" />


                </RelativeLayout>

            </android.support.v7.widget.Toolbar>

I wygląda to tak:

wprowadź opis zdjęcia tutaj

Możesz dodać detektor kliknięć do tego widoku obrazu z działania lub fragmentu w ten sposób.

  closeMyFlix.setOnClickListener({
            Navigator.instance.showFireTV(  activity!!.supportFragmentManager)
        })

0

Z Kotlin stał się:

Xml:

<include
android:id="@+id/tbSignToolbar "
layout="@layout/toolbar_sign_up_in"/>

W Twojej działalności: -

setSupportActionBar(tbSignToolbar as Toolbar?)//tbSignToolbar :id of your toolbar 
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)

0

Jeśli korzystasz z nawigacji JetPack.

Oto układ dla MainActivity

<androidx.constraintlayout.widget.ConstraintLayout 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:layout_height="match_parent"
                                               tools:context=".MainActivity">

<androidx.appcompat.widget.Toolbar
        android:id="@+id/toolBar"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

</androidx.appcompat.widget.Toolbar>

<fragment
        android:id="@+id/my_nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:defaultNavHost="true"
        app:layout_constraintTop_toBottomOf="@id/toolBar"
        app:layout_constraintBottom_toTopOf="parent"
        app:navGraph="@navigation/nav_graph"/>

Ustaw pasek narzędzi w swojej aktywności, jak poniżej w onCreate () swojej klasy Activity.

val navHostFragment = supportFragmentManager
        .findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment? ?: return

val navController = navHostFragment.findNavController()
val toolBar = findViewById<Toolbar>(R.id.toolBar)
setSupportActionBar(toolBar) // To set toolBar as ActionBar
setupActionBarWithNavController(navController)

setupActionBarWithNavController (navController) W razie potrzeby utworzy przycisk Wstecz na pasku narzędzi i obsługuje funkcję BackButton. Jeśli musisz napisać funkcję CustomBack, utwórz metodę callBack, jak poniżej, w swojej metodzie onCreate ()

val callback = requireActivity().onBackPressedDispatcher.addCallback(this) {
        // Handle the back button event
    }

Z dokumentacji: https://developer.android.com/guide/navigation/navigation-custom-back


0

Jeśli używasz androidx.appcompat.app.AppCompatActivitytylko użyj:

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

Następnie po prostu zdefiniuj w Manifest.xmldziałaniu nadrzędnym.

<activity
    android:name=".MyActivity"
    ...>
  <meta-data
      android:name="android.support.PARENT_ACTIVITY"
      android:value=".ParentActivity" />
</activity>

Zamiast tego, jeśli używasz a Toolbari chcesz niestandardowego zachowania, po prostu użyj:

<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar" 
    app:navigationIcon="?attr/homeAsUpIndicator"
    .../>

oraz w Twojej działalności:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //....
    }
});
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.