是什么原因导致android.support.v7.widget.Toolbar无法转换为android.widget.Toolbar

时间:2015-10-20 16:47:51

标签: android

我收到此错误

 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));
}

2 个答案:

答案 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.Toolbarappcompat-v7的一部分,因此可以返回到API级别7。

如果您的应用通常使用appcompat-v7(例如AppCompatActivityTheme.AppCompat),请使用android.support.v7.widget.Toolbar。如果您的应用通常使用原生操作栏,请使用android.widget.Toolbar