Ответ 1
Вы используете android.support.v7.widget.Toolbar
в своем XML, но в вашем java-коде вы импортируете android.widget.Toolbar
который является другим типом. Измените свой импорт на android.support.v7.widget.Toolbar
и он должен работать.
У меня есть toolbar.xml:
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/color_primary"
android:elevation="4dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark" />
У меня есть тег include для другого моего макета активности:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/AppTheme">
<include
layout="@layout/toolbar"
android:id="@+id/tb">
</include>
<android.support.v7.widget.RecyclerView
android:id="@+id/grade_list"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF" />
И я его реализовал в своей деятельности, которая расширяет AppCompatActivity:
Toolbar toolbar;
toolbar = (Toolbar)findViewById(R.id.tb);
setSupportActionBar(toolbar);
Однако при запуске приложения появляется следующее сообщение об ошибке:
Error:(26, 29) error: incompatible types: android.widget.Toolbar cannot be converted to android.support.v7.widget.Toolbar
Кроме того, когда я просматриваю свой макет в редакторе, я получаю следующее сообщение:
Missing styles. Is the correct theme chosen for this layout?
Use the theme combo box above the layout to choose a different layout, or to fix the theme style references.
Failed to find style 'toolbarStyle' in current layout.
И мои styles.xml:
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/color_primary</item>
<item name="colorPrimaryDark">@color/color_primaryDark</item>
<item name="colorAccent">@color/color_accent</item>
<item name="colorControlNormal">@color/color_accent</item>
</style>
Я не вижу, где я ошибаюсь. Правильная тема выбрана в редакторе и в файле манифеста. Вся помощь ценится, как всегда!
Вы используете android.support.v7.widget.Toolbar
в своем XML, но в вашем java-коде вы импортируете android.widget.Toolbar
который является другим типом. Измените свой импорт на android.support.v7.widget.Toolbar
и он должен работать.
android.support.v7.widget.Toolbar toolbar;
toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
если ваш проект уже перенесен в AndroidX, импортируйте этот
import androidx.appcompat.widget.Toolbar;
еще перенести в AndroidX с помощью
Refactor>Перенести в AndroidX
Полный код Пример XML и Java
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".Events.Events_Main_Activity">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbarlayout_id"
android:layout_width="match_parent"
android:layout_height="300dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsingtoolbar_id"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginEnd="8dp"
app:expandedTitleMarginStart="8dp"
app:layout_scrollFlags="exitUntilCollapsed|scroll"
app:title="Anime Title"
app:titleEnabled="true">
<ImageView
android:id="@+id/aa_thumbnail"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_gradient" />
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar_sec"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:title="shshhs" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</LinearLayout>
package com.uafappdevelopers.example;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
//note this import
import androidx.appcompat.widget.Toolbar;
import com.uafappdevelopers.uafportal.R;
public class Events_Second_Activity extends AppCompatActivity {
//add this for the navigation back button click event
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
finish();
return super.onSupportNavigateUp();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event_second);
//change id to Your id
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_sec);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
setTitle("University of Agriculture Faisalabad");
}
}