首页 > 解决方案 > 我可以在两个活动中使用相同的方法吗?

问题描述

我将导航栏隐藏在一项活动中并且工作正常。

我的问题是是否有任何方法可以在另一个活动中调用此方法,或者我应该复制并粘贴两次?

public void hideNavigationBar() {
int currentApiVersion;
currentApiVersion = android.os.Build.VERSION.SDK_INT;

final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_FULLSCREEN
        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;

// This work only for android 4.4+
if(currentApiVersion >= Build.VERSION_CODES.KITKAT)
{

    getWindow().getDecorView().setSystemUiVisibility(flags);

    // Code below is to handle presses of Volume up or Volume down.
    // Without this, after pressing volume buttons, the navigation bar will
    // show up and won't hide
    final View decorView = getWindow().getDecorView();
    decorView
            .setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener()
            {

                @Override
                public void onSystemUiVisibilityChange(int visibility)
                {
                    if((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0)
                    {
                        decorView.setSystemUiVisibility(flags);
                    }
                }
            });
}
}

我尝试通过创建它的实例在另一个活动中调用相同的方法

 MainActivity mainActivity = new MainAcitivity();
 mainAcitvity.hideNavigationBar();

,但它抛出

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.getDecorView()' on a null object reference

标签: javaandroid

解决方案


使用.创建BaseActivity()和扩展您的另一个。并将您的常用方法放在. 然后,您可以从任何.ActivityBaseActivityBaseActivityActivity


推荐阅读