我收到此错误
Caused by: java.lang.ClassCastException: android.support.v7.widget.Toolbar cannot be cast to android.widget.Toolbar
我使用此导入import android.support.v7.widget.Toolbar;
这是工具栏的代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
Toolbar tb=(Toolbar)findViewById(R.id.toolbar);
tb.inflateMenu(R.menu.main);
tb.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
return (onOptionsItemSelected(item));
}
});
// getMenuInflater().inflate(R.menu.main, menu);
// return true;
return(super.onCreateOptionsMenu(menu));
}
答案 0 :(得分:4)
对于许多小部件Android提供了两个版本。其中包括支持库和原生支持的一部分。如果您收到ClassCastException可能是因为您在布局中声明了Toolbar
而不是<android.support.v7.widget.Toolbar
答案 1 :(得分:2)
它们是完全独立的Java类。例如,您无法将java.lang.Double
转换为com.moudiz.Restaurant
。
android.widget.Toolbar
是API Level 21及更高版本的原生代码。 android.support.v7.widget.Toolbar
是appcompat-v7
的一部分,因此可以返回到API级别7。
如果您的应用通常使用appcompat-v7
(例如AppCompatActivity
,Theme.AppCompat
),请使用android.support.v7.widget.Toolbar
。如果您的应用通常使用原生操作栏,请使用android.widget.Toolbar
。