最佳解决void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)空指针问题

当尝试调用`setDisplayHomeAsUpEnabled()`方法时遇到了空指针异常。解决方案包括:检查主题是否设置为`Theme.AppCompat.Light.DarkActionBar`,将`getActionBar()`替换为`getSupportActionBar()`,并确保活动继承自`AppCompatActivity`而非`Activity`。

BUG:

Attempt to invoke virtual method 
'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' 
on a null object reference NullPointer 

解决:
1、检查主题(them),android:theme=“@style/Theme.AppCompat.Light.DarkActionBar”
2、将getActionBar()更改为getSupportActionBar()
3、注意,执行第二步之后,记得继承的活动是AppCompatActivity而不是Activity

package com.ahjswy.cn.ui; import android.Manifest; import android.app.ActionBar; import android.app.Activity; import android.app.Notification; import android.app.PendingIntent; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.view.KeyEvent; import android.view.MenuItem; import android.widget.Toast; import com.ahjswy.cn.R; import com.ahjswy.cn.app.MyApplication; import com.ahjswy.cn.app.RequestHelper; import com.ahjswy.cn.app.SystemState; import com.ahjswy.cn.baiduservice.JobWakeUpService; import com.ahjswy.cn.baiduservice.MyService; import com.ahjswy.cn.baiduservice.NotificationUtils; import com.ahjswy.cn.service.ServiceUser; import com.ahjswy.cn.ui.outgoods.OutDocEditActivity; import com.ahjswy.cn.utils.PDH; import com.ahjswy.cn.utils.ServiceUtil; import com.ahjswy.cn.utils.SpeechUtils; import com.baidu.location.BDAbstractLocationListener; import com.baidu.location.BDLocation; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.baidu.mapapi.map.MapStatus; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MyLocationData; import com.baidu.mapapi.model.LatLng; import java.util.ArrayList; public class BaseActivity extends Activity { private ActionBar actionBar; public boolean isModify = true; protected Handler mHandler; public void actionBarClickBack() { getActionBar().setDisplayOptions(4); } public void exit() { MyApplication.getInstance().exit(); } public void onBackPressed() { super.onBackPressed(); MyApplication.getInstance().getActivityManager().popActivity(this); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SystemState.enableStrictMode(); MyApplication.getInstance().getActivityManager().pushActivity(this); this.mHandler = new Handler(); // if(!ServiceUtil.isServiceExisted(this,MyService.class.getName())) { // location(); // } } protected void onDestroy() { MyApplication.getInstance().getActivityManager().popActivity(this); super.onDestroy(); } public boolean onOptionsItemSelected(MenuItem menu) { switch (menu.getItemId()) { case android.R.id.home: finish(); break; } return super.onOptionsItemSelected(menu); } protected void onResume() { super.onResume(); this.actionBar = getActionBar(); if (this.actionBar != null) { this.actionBar.setHomeButtonEnabled(true); setActionBarText(); } } public void refreshUI() { } public void setActionBarText() { // getActionBar().setTitle("打印模版编辑"); } public void setActionBarIcon() { getActionBar().setIcon(R.drawable.menu_btn_back); } protected void showError(final String showError) { this.mHandler.post(new Runnable() { public void run() { PDH.showError(showError); } }); } protected void showSuccess(final String showSuccess) { this.mHandler.post(new Runnable() { public void run() { PDH.showSuccess(showSuccess); } }); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { setResult(RESULT_FIRST_USER, new Intent()); finish(); return false; } return super.onKeyDown(keyCode, event); } /** * 绑定service,实现定位 */ private void location() { Intent intent = new Intent(this, MyService.class); startService(intent); if(Build.VERSION.SDK_INT >=Build.VERSION_CODES.LOLLIPOP) { //版本必须大于5.0 startService(new Intent(this, JobWakeUpService.class)); } } /** * 映美蓝牙打印 */ }
最新发布
09-09
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值