在Settings的一级菜单中增加一个选项
top_level_settings.xml
中添加
<com.android.settings.widget.HomepagePreferenceandroid:fragment="com.android.settings.network.NetworkSettingsFragment"android:icon="@drawable/ist_ic_settings_wireless"android:key="top_level_network_settings"android:order="-150"android:title="@string/network_settings_title"android:summary="@string/network_settings_summary"settings:controller="com.android.settings.network.TopLevelNetworkSettingsPreferenceController"/>
TopLevelAdvancedPreferenceController:控制是否显示
public class TopLevelAdvancedPreferenceController extends AbstractPreferenceController {public TopLevelAdvancedPreferenceController(Context context) {super(context);}@Overridepublic boolean isAvailable() {// 判断是否显示该设置项return true; // 一直可用}@Overridepublic String getPreferenceKey() {return "top_level_advanced";}
}
NetworkSettingsFragment:点进去的fragment页面
public class NetworkSettingsFragment extends DashboardFragment {@Overrideprotected String getLogTag() {return "NetworkSettings";}@Overrideprotected int getPreferenceScreenResId() {return R.xml.network_settings; // 对应的 XML 布局文件}@Overridepublic int getMetricsCategory() {return SettingsEnums.PAGE_ID_NETWORK_SETTINGS;}//createPreferenceControllers(Context)
//创建并返回与每个 Preference Key 对应的 !!!AbstractPreferenceController 实例!!!@Overrideprotected List<AbstractPreferenceController> createPreferenceControllers(Context context) {return NetworkPreferenceControllerHelper.getControllers(context);}
}
Helper:一般是获取数据类
public class NetworkPreferenceControllerHelper {public static List<AbstractPreferenceController> getControllers(Context context) {List<AbstractPreferenceController> controllers = new ArrayList<>();controllers.add(new WifiPreferenceController(context, "wifi_toggle"));controllers.add(new MobileDataPreferenceController(context, "mobile_data_toggle"));controllers.add(new AirplaneModePreferenceController(context, "airplane_mode_toggle"));return controllers;}
}