尽管不存在导入,但 AndroidX 工具栏类型不匹配
AndroidX Toolbar type mismatch despite imports not present
为什么 Android Studio 阻止我将 AndroidX Toolbar
(在 CollapsingToolbarLayout
内)设置为 ActionBar
?进口清单甚至没有显示我进口的是什么类型 Toolbar
那么在这种情况下我应该做什么?
Type mismatch: inferred type is androidx.appcompat.widget.Toolbar! but android.widget.Toolbar! was expected
XML
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
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/myCoordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/myAppBarLayout">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/myCollapsingToolbarLayout"
android:layout_width="match_parent"
android:layout_height="250dp"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|snap|exitUntilCollapsed">
<androidx.appcompat.widget.Toolbar
android:id="@+id/myToolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/myRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:scrollbarStyle="outsideInset"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Kotlin
import android.app.AlertDialog
import android.content.Intent
import android.graphics.Color
import android.net.Uri
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.LinearLayout
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.my_layout.*
class MainActivity : Activity() {
private lateinit var arrayMainItems: Array<String>
private lateinit var adapterGL: RVAdapterGL
private lateinit var adapterLL: RVAdapterLL
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.my_layout)
}
override fun onStart() {
super.onStart()
setContentView(R.layout.my_layout)
val mCoordinatorLayout = myCoordinatorLayout
val mAppBarLayout = myAppBarLayout
val mCollapsingToolbarLayout = myCollapsingToolbarLayout
val mToolbar = myToolbar
setActionBar(mToolbar)
mToolbar.title = getString(R.string.app_name)
}
}
您可以将其导入到您的 kotlin 文件中
import androidx.appcompat.widget.Toolbar;
当你这样做时
seActionBar(...
您使用的方法需要
android.widget.Toolbar
但是在 xml 中您使用的是 material 工具栏
您可以使用
setSupportActionBar
使用android.widget.Toolbar
代替androidx.appcompat.widget.Toolbar
并使用 setActionBar
而不是 setSupportActionBar
这是针对科特林的
为什么 Android Studio 阻止我将 AndroidX Toolbar
(在 CollapsingToolbarLayout
内)设置为 ActionBar
?进口清单甚至没有显示我进口的是什么类型 Toolbar
那么在这种情况下我应该做什么?
Type mismatch: inferred type is androidx.appcompat.widget.Toolbar! but android.widget.Toolbar! was expected
XML
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
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/myCoordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/myAppBarLayout">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/myCollapsingToolbarLayout"
android:layout_width="match_parent"
android:layout_height="250dp"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|snap|exitUntilCollapsed">
<androidx.appcompat.widget.Toolbar
android:id="@+id/myToolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/myRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:scrollbarStyle="outsideInset"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Kotlin
import android.app.AlertDialog
import android.content.Intent
import android.graphics.Color
import android.net.Uri
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.LinearLayout
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.my_layout.*
class MainActivity : Activity() {
private lateinit var arrayMainItems: Array<String>
private lateinit var adapterGL: RVAdapterGL
private lateinit var adapterLL: RVAdapterLL
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.my_layout)
}
override fun onStart() {
super.onStart()
setContentView(R.layout.my_layout)
val mCoordinatorLayout = myCoordinatorLayout
val mAppBarLayout = myAppBarLayout
val mCollapsingToolbarLayout = myCollapsingToolbarLayout
val mToolbar = myToolbar
setActionBar(mToolbar)
mToolbar.title = getString(R.string.app_name)
}
}
您可以将其导入到您的 kotlin 文件中
import androidx.appcompat.widget.Toolbar;
当你这样做时
seActionBar(...
您使用的方法需要
android.widget.Toolbar
但是在 xml 中您使用的是 material 工具栏
您可以使用
setSupportActionBar
使用android.widget.Toolbar
代替androidx.appcompat.widget.Toolbar
并使用 setActionBar
而不是 setSupportActionBar
这是针对科特林的