有很多问题可以解决这个错误。这些的解决方案是:
- 让MainActivity
班级延长AppCompatActivity
- 致电getSupportActionBar()
,而不是getActionBar()
我已经在做这些了。
我发现appcompat-v7 22.1.1和appcompat-v7 23.1.1有所不同。 我在23中得到错误。在22中它工作正常。
单步执行调试器中的代码,我在AppCompatDelegateImplV7.intWindowDecorActionBar()
中看到了
mHasActionBar 为false,导致mActionBar无法实例化。
单步执行22.1.1中的代码,代码略有不同,但最终,我看到 mHasActionBar 为真,因此代码可以工作。
我该如何处理?
import android.support.v7.app.ActionBar;
...
public class MainActivity extends AppCompatActivity implements ...
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeAsUpIndicator(R.drawable.ic_drawer);
....
}
答案 0 :(得分:1)
您可能希望尝试将NoActionBar主题应用于清单中的应用程序,并在布局xml文件中使用工具栏而不是Actionbar。
Theme.AppCompat.Light.NoActionBar
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_player"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
style="@style/Topeka.TextAppearance.Title"
android:background="@color/topeka_primary"
android:elevation="@dimen/elevation_header">
&#13;
然后在Java代码中,将其设置为Actionbar
private void setUpToolbar(Player player) {
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_player);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
((TextView) toolbar.findViewById(R.id.title)).setText(getDisplayName(player));
}