应用程序在隐藏ActionBar时崩溃了?

时间:2015-07-01 03:29:48

标签: android android-activity android-actionbar

我点击时Button calls函数hide_bar()

public void hide_bar(View v){
        ActionBar ab = getActionBar();
        ab.hide();
    }

但不是隐藏操作栏,而是崩溃了应用

如何修复此错误?

FATAL EXCEPTION: main Process: com.example.prateek.myapp, PID: 19919 java.lang.IllegalStateException: Could not execute method of the activity Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.hide()' on a null object reference 

更新(问题已解决):

我无法使用getActionBar()因为我的manifest文件定义了 appCompat主题,您必须使用 getSupportActionBar()

将清单文件中的主题替换为Theme.Holo.Light后,我可以使用getActionBar()方法。

4 个答案:

答案 0 :(得分:1)

当您展开 String number = "1"; byte num[] = number.getBytes(); for(int i =0; i<num.length;i++){ outputStream.write(num[i]); } outputStream.flush(); 时,您需要通过调用

来获取actionBar
ActionBarActivity

答案 1 :(得分:1)

您需要知道应用程序使用哪些操作栏来调用正确的方法来获取操作栏。 您的异常也是NPE,因此您需要在使用之前检查变量的值。

请参考以下代码:

public void hide_bar(View v){
    ActionBar ab = getActionBar();
    if (ab != null)
      ab.hide();
    else {
      ab = getSupportActionBar();
      if (ab != null) ab.hide();
    }
}

答案 2 :(得分:-1)

你可以这样做,

ActionBar ab;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ab = getActionBar();
    }

    public void hide_bar(View v){
           ab.hide();
    }

答案 3 :(得分:-1)

在调用hide()之前,需要调用setSystemUiVisibilty()并设置UI标志。

隐藏操作栏的实际代码段是:

View decorView = getWindow().getDecorView();  int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(uiOptions);  ActionBar actionBar = getActionBar(); actionBar.hide();

取自developer.android.com

请参阅https://developer.android.com/training/system-ui/status.html#41了解详情