我点击时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()
方法。
答案 0 :(得分:1)
当您展开 String number = "1";
byte num[] = number.getBytes();
for(int i =0; i<num.length;i++){
outputStream.write(num[i]);
}
outputStream.flush();
时,您需要通过调用
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了解详情