top_level_settings.xml
中添加
<com.android.settings.widget.HomepagePreference
android: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);
}
@Override
public boolean isAvailable() {
// 判断是否显示该设置项
return true; // 一直可用
}
@Override
public String getPreferenceKey() {
return "top_level_advanced";
}
}
NetworkSettingsFragment:点进去的fragment页面
public class NetworkSettingsFragment extends DashboardFragment {
@Override
protected String getLogTag() {
return "NetworkSettings";
}
@Override
protected int getPreferenceScreenResId() {
return R.xml.network_settings; // 对应的 XML 布局文件
}
@Override
public int getMetricsCategory() {
return SettingsEnums.PAGE_ID_NETWORK_SETTINGS;
}
//createPreferenceControllers(Context)
//创建并返回与每个 Preference Key 对应的 !!!AbstractPreferenceController 实例!!!
@Override
protected 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;
}
}