Android Back Arrow на панели инструментов (AppCompatActivity)

Я хочу показать кнопку со стрелкой назад в своем приложении, но приложение падает, когда я помещаю это в свой код:

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

style.xml

  <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/PrimaryColor</item> <item name="colorPrimaryDark">@color/PrimaryColorDark</item> <item name="colorAccent">@color/PrimaryColor</item> <item name="colorControlHighlight">@color/ControlHighlight</item> <item name="android:statusBarColor" tools:targetApi="21">@android:color/transparent</item> </style> <style name="ActionBarPopupThemeOverlay" parent="ThemeOverlay.AppCompat.Light" > <item name="android:textColor">#000000</item> </style> <style name="MyCustomTabLayout" parent="Widget.Design.TabLayout"> <item name="tabIndicatorColor">#FFFFFF</item> <item name="tabIndicatorHeight">3dp</item> <item name="tabTextAppearance">@style/MyCustomTabTextAppearance</item> </style> <style name="MyCustomTabTextAppearance" parent="TextAppearance.Design.Tab"> <item name="android:textColor">#FFFFFF</item> </style> 

toolbar.xml

 <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_height="@dimen/abc_action_bar_default_height_material" android:elevation="0dp" android:layout_width="match_parent" android:id="@+id/toolbar" android:background="@color/PrimaryColor" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ActionBarPopupThemeOverlay"/> 

Класс (не фрагмент) :

 public class WebViewCanale extends AppCompatActivity { Toolbar toolbar; TextView textView; WebView webView; ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webview_canali); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); //Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); //FindViewById webView = (WebView) findViewById(R.id.webview); textView = (TextView) findViewById(R.id.textView); progressBar = (ProgressBar) findViewById(R.id.progressBar); //Impostazioni WebView WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setLoadsImagesAutomatically(true); webView.loadUrl(this.getIntent().getDataString()); webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); webView.getSettings().setAppCacheEnabled(false); //Titolo Toolbar webView.setWebChromeClient(new WebChromeClient() { @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); if (!TextUtils.isEmpty(title)) { WebViewCanale.this.setTitle(title); } } }); } } 

Интересно, почему на этот вопрос нет полного ответа, но, наконец, я решил сам по себе:

Используйте следующий фрагмент, чтобы иметь кнопку возврата на панели инструментов в AppCompatActivity :

  toolbar = (Toolbar) findViewById(R.id.hack_toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //do something you want } }); 

Вы также можете просто объявить в Manifest ParentActivity : <android:ParentActivityName=".TheActivityThatCalledThisOne">

Добавить эту тему:

 <style name="AppTheme2" parent="Theme.AppCompat.Light"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> <item name="colorPrimary">@color/appColor</item> <item name="colorControlNormal">@color/whiteColor</item> <item name="colorControlActivated">@color/appColor</item> </style> 

И в вашей деятельности:

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

Прежде чем вы сможете его получить, вам нужно установить панель поддержки. Поэтому поместите следующий код

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

Перед этим Кодексом

 getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); 
  @BindView(R.id.toolbar) Toolbar toolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user_events); ButterKnife.bind(this); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } @Override public boolean onSupportNavigateUp() { onBackPressed(); return true; } 

onSupportNavigateUp() Этот метод вызывается всякий раз, когда пользователь выбирает перемещение вверх по иерархии действий вашего приложения из панели действий.

onBackPressed(); Позаботьтесь о том, чтобы вытащить стопку фрагмента или завершить работу, если это необходимо.

Intereting Posts
Команда ADB tcpip без кабеля Android ImageView, как установить левый нижний, такой как setScaleType (ScaleType.FIT_END) ;, но не подходит для правого нижнего Android: используйте базу данных SQLite на SD-карте (вообще не используя встроенный Android-хранилище данных) Как исправить утечку памяти в Android, связанную с Threads? Ошибка: android.database.sqlite.SQLiteException; Рядом с «student_name»; Синтаксическая ошибка (код 1); При компиляции: CR Отладка после реактивации активности Как разместить представление вне экрана в макете Android Как определить, отображается ли экранная клавиатура на экране – при использовании monkeyrunner Получение и фильтрация данных GPS GPS, как улучшить информацию о местоположении Возможно ли получить текущий профиль телефона? Работа с Android-аппаратом Назад Изображения для кнопок AlertDialog … вы объявили эту активность в своем AndroidManifest.xml Диалог для выбора изображения из галереи или с камеры Добавить элемент в список в Firebase Databse