Панель действий со стрелкой назад

Я создаю приложение, и я хочу поместить панель действий со стрелкой назад в фрагмент.
Итак, у меня уже есть фрагмент с панелью действий, но я не знаю, как поставить на него стрелку назад. Можете ли вы мне помочь? Спасибо,
Гильерме
Это фрагмент с тегом Action bar

Ответ 1

Добавьте в фрагмент следующую строку, если вы хотите отобразить кнопку возврата из фрагмента:  ((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Было бы лучше, что вместе с этим. Вы добавляете родительский элемент активности в файл манифеста, чтобы убедиться, что родительская активность открывается при нажатии стрелки назад.

Ответ 2

У меня есть что-то вроде этого для кнопки "Назад" на панели инструментов вместо панели действий.

В activity_main.xml:

<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:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.wolfmatrix.dummy.MainActivity">

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbarId"
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:background="@color/colorPrimary">

    <TextView
        android:id="@+id/toolbarTextId"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:textColor="@android:color/white"
        android:textSize="14sp" />
</android.support.v7.widget.Toolbar>

<ImageButton
    android:id="@+id/backButtonIcon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    android:gravity="left"
    android:padding="10dp"
    app:srcCompat="@drawable/ic_arrow_back_black_24dp" />

</RelativeLayout>

В styles.xml: используйте тему = > Theme.AppCompat.Light.NoActionBar

В ic_arrow_back_black_24dp.xml используйте следующее:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
<path
    android:fillColor="#ffffff"
    android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>

И теперь на панели инструментов есть значок назад.

Ответ 3

Попробуйте ввести код

Внедрите OnBackStackChangedListener и добавьте этот код в свою Фрагментную активность.

@Override
public void onCreate(Bundle savedInstanceState) {
    //Listen for changes in the back stack
    getSupportFragmentManager().addOnBackStackChangedListener(this);
    //Handle when activity is recreated like on orientation Change
    shouldDisplayHomeUp();
}

@Override
public void onBackStackChanged() {
    shouldDisplayHomeUp();
}

public void shouldDisplayHomeUp(){
   //Enable Up button only  if there are entries in the back stack
   boolean canback = getSupportFragmentManager().getBackStackEntryCount()>0;
   getSupportActionBar().setDisplayHomeAsUpEnabled(canback);
}

@Override
public boolean onSupportNavigateUp() {
    //This method is called when the up button is pressed. Just the pop back stack.
    getSupportFragmentManager().popBackStack();
    return true;
}

Ответ 4

добавить в свой onCreate в верхней части

  ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.setDisplayHomeAsUpEnabled(true);
    }

и добавить функцию к активности

 public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == android.R.id.home) {
        getSupportFragmentManager().popBackStack();
        finish();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

удача

Ответ 5

Добавьте строку ниже после setcontentview()

 //by doin that Back arrow will appear
 getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Создайте следующий переопределенный метод после onCreate().

 @Override
    public boolean onSupportNavigateUp() {
        finish();
        return super.onSupportNavigateUp();
    }