blob: eec3ea500071e4d73fe4759fbb82376081955aaf [file] [log] [blame]
/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.support.v13.app;
import android.app.Fragment;
/**
* Helper for accessing features in {@link Fragment} introduced after
* API level 13 in a backwards compatible fashion.
*/
public class FragmentCompat {
interface FragmentCompatImpl {
void setMenuVisibility(Fragment f, boolean visible);
void setUserVisibleHint(Fragment f, boolean deferStart);
}
static class BaseFragmentCompatImpl implements FragmentCompatImpl {
public void setMenuVisibility(Fragment f, boolean visible) {
}
public void setUserVisibleHint(Fragment f, boolean deferStart) {
}
}
static class ICSFragmentCompatImpl extends BaseFragmentCompatImpl {
@Override
public void setMenuVisibility(Fragment f, boolean visible) {
FragmentCompatICS.setMenuVisibility(f, visible);
}
}
static class ICSMR1FragmentCompatImpl extends ICSFragmentCompatImpl {
@Override
public void setUserVisibleHint(Fragment f, boolean deferStart) {
FragmentCompatICSMR1.setUserVisibleHint(f, deferStart);
}
}
static final FragmentCompatImpl IMPL;
static {
if (android.os.Build.VERSION.SDK_INT >= 15) {
IMPL = new ICSMR1FragmentCompatImpl();
} else if (android.os.Build.VERSION.SDK_INT >= 14) {
IMPL = new ICSFragmentCompatImpl();
} else {
IMPL = new BaseFragmentCompatImpl();
}
}
/**
* Call {@link Fragment#setMenuVisibility(boolean) Fragment.setMenuVisibility(boolean)}
* if running on an appropriate version of the platform.
*/
public static void setMenuVisibility(Fragment f, boolean visible) {
IMPL.setMenuVisibility(f, visible);
}
/**
* Call {@link Fragment#setUserVisibleHint(boolean) setUserVisibleHint(boolean)}
* if running on an appropriate version of the platform.
*/
public static void setUserVisibleHint(Fragment f, boolean deferStart) {
IMPL.setUserVisibleHint(f, deferStart);
}
}