android源码SettingsPreferenceFragment 实现?
根据结果寻找原因
在setting中有这个preference_widget_wifi_signal.xml,其里面已经定义了该类的UI。
+继承和多态。
++继承就是干掉重复性的工作,减少琐碎的事务,避免冗余性,避免做别人做的工作,吸取别人的经验,从短期来讲是提高效率,节省时间,但是长期来看过程很重要。就像你继承你老爸的家业,财产,行为习惯。
++多态是满足不同的需求去实现,提高扩展性,应付变化。
class WifiDialog extends AlertDialog implements WifiConfigUiBase {
}
wifi_dialog.xml
public class WifiSettings extends SettingsPreferenceFragment implements DialogInterface.OnClickListener {
mDialog = new WifiDialog(getActivity(), this, ap, mDlgEdit);
}
+Settings中有很多对话框,而且每个对话框都不一样,怎么办? 那么要定义一个标准,这个标准用接口来体现。它只负责信息的传递和发送。其它不需要关注,它只是桥梁作用。
public class SettingsPreferenceFragment extends PreferenceFragment implements DialogCreatable {
}
settings_headers.xml
<!-- Wifi -->
<header
android:id="@+id/wifi_settings"
android:fragment="com.android.settings.wifi.WifiSettings"
android:title="@string/wifi_settings_title"
android:icon="@drawable/ic_settings_wireless" />
View onCreateView (){
setup_preference.xml
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1"
android:cacheColorHint="@android:color/transparent"
android:clipToPadding="false"
android:drawSelectorOnTop="false"
android:paddingTop="0dip"
android:scrollbarAlwaysDrawVerticalTrack="true" />
}
关键点
行为: mWifiManager.connect(config, mConnectListener);
标准: mConnectListener = new WifiManager.ActionListener() {
public void onSuccess() {
//(1)成功
}
public void onFailure(int reason) {
//(2)失败
Activity activity = getActivity();
if (activity != null) {
Toast.makeText(activity,
R.string.wifi_failed_connect_message,
Toast.LENGTH_SHORT).show();
}
}
};