Java getActionBar()在actionBar中返回NULL
我目前正在android studio中创建Java getActionBar()在actionBar中返回NULL,java,android,object,android-studio,nullpointerexception,Java,Android,Object,Android Studio,Nullpointerexception,我目前正在android studio中创建actionBar,我已经创建了动作按钮,我的目标是每次单击按钮时都有一个下拉菜单 在我的菜单_main.xml中,我添加了搜索和帮助项目: <item android:id="@+id/menu_search" android:icon="@drawable/ic_action_search" android:title="@string/menu_search"
actionBar
,我已经创建了动作按钮,我的目标是每次单击按钮时都有一个下拉菜单
在我的菜单_main.xml中,我添加了搜索和帮助项目:
<item
android:id="@+id/menu_search"
android:icon="@drawable/ic_action_search"
android:title="@string/menu_search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="collapseActionView|ifRoom"/>
<item android:id="@+id/action_help"
android:icon="@drawable/ic_action_help"
android:title="@string/action_help"
app:showAsAction="ifRoom"/>
在我的onOptionsItemSelected()
方法中,我添加了这样一种情况:每次单击此按钮时,它都会调用一个函数。这是我的密码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()) {
case R.id.action_help:
helpMessage();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void helpMessage() {
//Toast.makeText(this, "Location button pressed", Toast.LENGTH_SHORT).show();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_dropdown_item, actions);
System.out.println("HERE: " + getActionBar());
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
ActionBar.OnNavigationListener navigationListener = new ActionBar.OnNavigationListener() {
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
Toast.makeText(getBaseContext(), "You selected : " + actions[itemPosition], Toast.LENGTH_SHORT).show();
return false;
}
};
getActionBar().setListNavigationCallbacks(adapter, navigationListener);
}
@覆盖
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
开关(item.getItemId()){
案例R.id.action\u帮助:
帮助信息();
返回true;
违约:
返回super.onOptionsItemSelected(项目);
}
}
私有void帮助消息(){
//Toast.makeText(此“位置按钮按下”,Toast.LENGTH_SHORT).show();
ArrayAdapter=新的ArrayAdapter(getBaseContext(),android.R.layout.simple\u微调器\u下拉菜单\u项,操作);
System.out.println(“此处:+getActionBar());
getActionBar().setNavigationMode(ActionBar.NAVIGATION\u MODE\u列表);
ActionBar.OnNavigationListener navigationListener=新建ActionBar.OnNavigationListener(){
@凌驾
公共布尔值onNavigationItemSelected(int-itemPosition,long-itemId){
Toast.makeText(getBaseContext(),“您选择:”+actions[itemPosition],Toast.LENGTH\u SHORT.show();
返回false;
}
};
getActionBar().setListNavigationCallbacks(适配器、navigationListener);
}
当我运行程序时,我的应用程序会崩溃,我会
NullPointerException:尝试调用虚拟方法“void”
空对象上的android.app.ActionBar.setNavigationMode(int)“”
参考文献
它指向getActionBar()
,它是空的。
有什么想法吗?使用
getSupportActionBar()
而不是getActionBar()
。此外,活动的主题应扩展为主题。AppCompat
使用getSupportActionBar()
而不是getActionBar()
。此外,活动的主题应扩展为主题。AppCompat
使用getSupportActionBar()
而不是getActionBar()
。此外,活动的主题应扩展为主题。AppCompat
使用getSupportActionBar()
而不是getActionBar()
。另外,您活动的主题应该扩展为主题。AppCompat
我总是有这个错误。。。。
我找到了一个解决方案,我把它放到我的风格中
它将是有效的,getActionBar()
将不再为空
<item name="android:windowNoTitle">false</item>
<item name="android:windowActionBar">true</item>
false
真的
希望这对你有所帮助我总是有这样的错误。。。。 我找到了一个解决方案,我把它放到我的
风格中
它将是有效的,getActionBar()
将不再为空
<item name="android:windowNoTitle">false</item>
<item name="android:windowActionBar">true</item>
false
真的
希望这对你有所帮助我总是有这样的错误。。。。 我找到了一个解决方案,我把它放到我的
风格中
它将是有效的,getActionBar()
将不再为空
<item name="android:windowNoTitle">false</item>
<item name="android:windowActionBar">true</item>
false
真的
希望这对你有所帮助我总是有这样的错误。。。。 我找到了一个解决方案,我把它放到我的
风格中
它将是有效的,getActionBar()
将不再为空
<item name="android:windowNoTitle">false</item>
<item name="android:windowActionBar">true</item>
false
真的
希望这对你有所帮助我想你应该
1.检查主题
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
2.检查您的活动类,它是extend AppcombatActivity或ActionBarActivity
所以,我希望它对你有用我想你应该
1.检查主题
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
2.检查您的活动类,它是extend AppcombatActivity或ActionBarActivity
所以,我希望它对你有用我想你应该
1.检查主题
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
2.检查您的活动类,它是extend AppcombatActivity或ActionBarActivity
所以,我希望它对你有用我想你应该
1.检查主题
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
2.检查您的活动类,它是extend AppcombatActivity或ActionBarActivity
因此,我希望它对您有用谢谢!但不幸的是,我已经试过了,但没有成功。应用程序仍然崩溃。你知道为什么
getActionBar()
返回空值吗?尝试扩展AppCompatActivity,也许它会帮助你。我刚刚启动了它,没有崩溃,活动从appcompativity
和getSupportActionBar()
扩展,我将扩展更改为appcompativity
并使用了getSupportActionBar()
,但在我的setListNavigationCallbacks()
中,我需要强制转换导航侦听器,所以我铸造了它。还有java.lang.ClassCastException:com.example.marananald.finalactionbar.MainActivity$1不能强制转换为android.support.v7.app.ActionBar$OnNavigationListener
实际上,此方法在API级别21中已被弃用,因此,最好使用最新的导航模式。但是,如果您仍然希望使用此方法,则应该为此方法提供正确的导航侦听器。您只需使您的活动实现ActionBar.OnNavigationListener界面,并实现正确的方法,然后将MainActivity传递给您。此作为导航Listener谢谢!但不幸的是,我已经试过了,但没有成功。应用程序仍然崩溃。你知道为什么getActionBar()
返回空值吗?尝试扩展AppCompatActivity,也许它会帮助你。我刚刚启动了它,没有崩溃,活动从appcompativity
扩展到getSupportActionBar()
我将扩展更改为appcompativity
a