![](/img/trans.png)
[英]Can I use the same adapter for two different listviews in different activities?
[英]Can i use the same method in two activities?
我将导航栏隐藏在一个活动中,并且工作正常。
我的问题是是否有任何方法可以在另一个活动中调用此方法,还是应该将其复制并粘贴两次?
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()
并使用BaseActivity
扩展其他Activity
。 并将您的常用方法放在BaseActivity
。 然后,您可以从任何Activity
进行呼叫。
作为创建基类的替代方法:
public static void hideNavigationBar(View decorView) {
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;
if(SDK_INT >= KITKAT) {
decorView.setSystemUiVisibility(flags);
decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
if((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
decorView.setSystemUiVisibility(flags);
}
}
});
}
}
用法(在任何活动中):
hideNavigationBar(getWindow().getDecorView());
是的,创建扩展Activity.java或AppcompatActivity.java类的父活动类肯定会为您提供帮助。
稍后,可以在您的两个活动中扩展此父活动。
class ParentActivity extends Activity{
public void yourMethod(){
}
}
//Later
class FirstActivity extends ParentActivity {
}
class SecondActivity extends ParentActivity {
}
首先,您必须创建父活动。
public class ParentActivity extends Activity {
public void yourMethod() {
//implement your method here
}
}
之后,您只需要像这样创建活动即可:
class Activity1 extends ParentActivity {
//call the override method
}
class Activity2 extends ParentActivity {
//call the override method
}
如果您有片段,则可以用相同的方法解决此问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.