0

我有MainActivity扩展AppCompatActivity。在这 3 个片段中,可以通过滑动手势进行更改。我想删除中间的操作栏。并在用户滑入第一个或第三个片段时再次添加操作栏。

我有以下代码:

@Override
public void setMenuVisibility(boolean menuVisible) {
    super.setMenuVisibility(menuVisible);
    if(menuVisible && getActivity()!=null){
        getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }
}

@Override
public void setMenuVisibility(boolean menuVisible) {
    super.setMenuVisibility(menuVisible);
    if(menuVisible){
        getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }
}

但是,它给了我以下警告:

跳过了 45 帧!应用程序可能在其主线程上做了太多工作。

我试图把它放在:

getActivity().runOnUiThread(new Runnable() {
    @Override
    public void run() {
         // hide / show action bar...
    }
});

应用程序滞后。我怎样才能使它顺利?

4

1 回答 1

1

onResume在中间的回调中添加如下代码片段Fragment

AppCompatActivity activity = (AppCompatActivity) getActivity();
if (activity != null) {
    activity.getSupportActionBar().hide();
}

并在onResume其他两个Fragments的回调中添加

AppCompatActivity activity = (AppCompatActivity) getActivity();
if (activity != null) {
    activity.getSupportActionBar().show();
}
于 2016-06-29T19:24:32.140 回答