java - 我可以在两个活动中使用相同的方法吗?
问题描述
我将导航栏隐藏在一项活动中并且工作正常。
我的问题是是否有任何方法可以在另一个活动中调用此方法,或者我应该复制并粘贴两次?
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
解决方案
使用.创建BaseActivity()
和扩展您的另一个。并将您的常用方法放在. 然后,您可以从任何.Activity
BaseActivity
BaseActivity
Activity
推荐阅读
- mobile - Singleton Class vs Statemangement tool like Redux for App State
- html - HTML5 视频无法在 localhost 中播放,但可以在 vs 代码中使用“使用 Live Server 打开”播放
- arrays - 对 Ruby 数组中的值求和
- python - 我在 PyCharm 上的代码有问题。我正在尝试读取 csv 文件,但出现 unicode 错误,无法读取位置中的特定字节
- java - Jackson 用于序列化嵌套字段的多种不同模式
- java - 如何在java中返回一个对象数组?
- javascript - Webpack 意外令牌';'
- css - 在容器内放置一个固定元素
- javascript - 在 php 和 javascript 之间传递数据时,Json_Encode 不起作用
- java - 从 Instagram 个人资料中读取文本