Android問題集錦之四十一:getActionBar為null的解決以及ActionBar的Back鍵
阿新 • • 發佈:2019-02-20
我們用getActionBar獲得ActionBar例項,將其隱藏或做其他操作。
ActionBar actionBar = getActionBar();
不過我這樣做了,但是actionBar是null。
問題是由Activity基類引起的,當使用AppCompatActivity或其他support包中的基類,那麼獲得ActionBar例項需要用另一個相應的方法,那就是getSupportActionBar(),ActionBar也要使用相應support包下的。
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
那麼這樣就可以ActionBar自帶的back功能了。
if(actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.home) {//back key
Intent intent = NavUtils.getParentActivityIntent(this);
if(intent != null) {
if (NavUtils.shouldUpRecreateTask(this, intent)) {
TaskStackBuilder.create(this)
.addNextIntentWithParentStack(intent)
.startActivities();
} else {
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
NavUtils.navigateUpTo(this, intent);
}
} else {
Log.e(TAG,"intent is null");
}
}
return super.onOptionsItemSelected(item);
}