Я создаю приложение, и я хочу поместить панель действий со стрелкой назад в фрагмент.
Итак, у меня уже есть фрагмент с панелью действий, но я не знаю, как поставить на него стрелку назад.
Можете ли вы мне помочь?
Спасибо,
Гильерме
Это фрагмент с тегом 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();
}