Android Fragment基础及使用

时间:2023-03-09 05:08:58
Android Fragment基础及使用

同一个app内的界面切换 用Fragment比较合适,因为Activity比较重量级

Fragment 轻量级,切换灵活

-------------------------------------------

1. 创建和使用 Fragment

2. Fragment 的生命周期 及相关的实际应用

3. 创建一个带侧边栏的 Activity 以及使用

4. 创建一个 Tabbed Activity 并使用

5. 多个Fragment的切换和状态保存

6. Fragment的横竖屏切换

7. Fragment 与 Activity通信

-------------------------------------------

工程代码:Android Fragment基础及使用FragmentDemo.zip

-------------------------------------------

1. 创建和使用 Fragment

* 创建一个 带Fragment的Activity,将Fragment重构到一个新文件中PlaceholderFragment.java

* 创建另一个Fragment,AnotherFragment.java

* 使用按钮实现两个Fragment的切换

aaarticlea/png;base64,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" alt="" />

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQcAAAC6CAIAAAAs6h/vAAAUgElEQVR4nO2d0XMTR57Hf/9IqvKwVZcqHT45D3ncv0APxFil5OnydE96uCJgKD3sESjXorpsAinHkFIFApdhc+w6mBhjoiXxYCUQ7A3YFrY1BoMl2ZYKDDG1VbZu2azuYaSZ7pnumZFm1DPS/D7VRcmj7v7+RpqvNGPm6wYZQRAa8LsABAkc4HcBCBI4wO8CECRwgN8FIEjgAL8LQJDAAX4XgCCBA4QrpmMQSwtXRRDnQNsjc//9ltZaGYeuQIIOtDdsLPmbOsFY8jeOh3bUFVIygp5D3ALMradOnTpx4gRvTG74rVr1bK16dqdwqjp/cl0+Whj/z9zwW2TjK6IrkKAD5k0fffTR66+//tprr/HG3Bx+s7bzk0W7OfwmX5FwhZSMQINYuvFzJCnpHRs/pGMAVEeZPv4bj4lu+iwI0jJg+Fm1xDvvvGPliv96s1Ydt2jn/v11vqLmCikZax676VjjcNedoPVLx4C2iu4gs0PwuwLxACB/0Czx7rvvWriiXq8/vXu+KMWf3j1fr9fHDv6bRTONps6gjN8Wui0IU1Af/M3jHl2BdAzQHpGWsHVFUYrX/5EvSvF6vV5bP8ts1fmTVq6QkhHtS4A4mKVkJJKU9A0MV0SSEroC6SCgPTpx4sRrBB988AFzQL1efyp/WCsc2/8G1ArHnsp/qNfrtcJJQ+NYQmZ+CUjJCHXBEInFIhHy7IpxsUFcgxDD0RWIB0CrA9QvCs0Vja+L+WNk41tCpq4rmmdPkViMPJhpH8jsq21iPDm8sRGvthEXQKsDihNHn8vv1QrHFj//ba1w7Pn0e6WJo7V5vVlawhHGkyYEEQu0OqAoxX99fPz5zKH9b8DzmUO/rh0vSvFz//EvZHNVEZ4EIX4DrQ64Pdz3z/LoTuHU5MjATuFUvTR6e7jPq2rUUyX0BOIv0OqAzTtf3B7uI9vmnS+8rwtB/AP8LgBBAgf4XQCCBA4QoDEt37p6a+mrmZKUq2LzvH01U7p6a2laviXgrQwJIEDjyq3CTL66VqpsbmHzvq2VKjP56pVbBQFvZUgAARqXcluljcrqw7XlFWXp9v/c/37U3CqPZ5dXFGxttNWHa6WNyqXcloC3MiSAAA0pV93cqiytKEsryux3Z7eKSy9fviDbL/NjjyePP7w3rvbB1mrb3KpIuaqAtzIkgAANKVfd2Gy44qe/fPa08mTv76+oVvj2xdVD5eu/Kz74i5eHy7epKPQf/bbFpzxvHdTKxCFxdkXZ2ERXeAkI0JBy1fJmJb+s5JeVH298Xqms7/7fK6qt5f5284OdiaHitd8VFqbVnh60G6ko9B+50eJTnrcOamXikBhdVsroCk8BARoNVywp+SXl5tS5zc3i32qvqFZZVdvmyu27M39We7bbskeiED/buf6Bapk4JEaX0BUeAwI0pFy1tFlZWFIWlpTsxMX1jdLLvb/v7L0a/PBfybaz9+rJZumH6a/Vnu227FAUBs92rn+gWmYQEp8uKSV0haeAAA0pVy1uVOYfKPMPlG+++fJRqaxagvwrIaorHpWK8nfjak9Gu57qa95QPnhG254ZbG7sO5LSHkM0NXE91QeJkQfZw1HoO5JV+08c6SeeyhD9E4NEt/kzCYimJow1ZAah//CZRhmDZ5T5M4mmdJZbZEOrOfyIaYhWWKObMhIHiGccyGUGITHyQCluoCu8BARoSLnqerlyP6/czyuXxy8V1kuqJXb2XqlNc8Xqeil7c0LtaWrZw/HUN+rj0QRAYiSv3M9nDgD0HclS3aJwYFS5n1fuT6b61G6jCYiqY5vPak+R/fVuyki8uZFqmQMAjT6jCQCAeIYSYhapP5s5QA3pPzxJzT8Sh74jWaIMW7nMAUiM5JX1MrrCS0CAhuqKe3nlXl6Rxi7n1xqu2HpZU5vqiq2XtaW10rXspNqT2a4e6W9+ECc+ySv3RhMQTV2l+mQPReHAqHIvr9ybTPWp3fKZA9B/aJLYoj9F9Ne65TMHGs8amtbB4rGpSHMZDV19CDE/gL2EsU50hbeAAA0pV31Srvy8qPy8qJy7PDb7qKy6Yv2XmtpUV6z/UvvrWvnq1A21p7FdS/UB9A1lm48TnywqP48mIJoap3pm34/CwKhCdVtUPhmEvqHs+FC/cQay/6Kidhgf6ofBDKuMzAD0v3+N/5hZpK5FDsm+H9Uek/MDWEtQjzMDkPhkUXmCrvAUEKAh5aqPS5W5BWVuQfnsqytzq+UnL2rm64onL2pzq+U/X8+qPY3t0wREU1cWlLkF5cpQP0Di9IIyt5AZABj4VO2TOTiUnVvIHow2t0yk9jW6KXMTqX3RxEC0/+CE4Smiv7mbsWUGQHuK9ZhZpK5FDskeVFUmUvuaG08Pwr6h7JWh/uYkdnILmQFInF5QHpfQFV4CAjSkXHWtVJldUGYXlJFLV38olFe3a6vbe9pvn1RXrG7v3S6UpGs31Z6mlj0YbZyX7BtMqMfZ7IIyO5Ha1zxdUbd8PdSvXm1/3Twc9eGDmVl9lKn/gjK7oJwe1B+bWuZt6D84YfGYVaSuRQ5puGK26QpCVyvVVi7zNiROLyhr6ApPAQEaUq66VqzcnVfuzisfS9dmlssrz3aXnu0WtneVZ7uF7d3l7b2lZ7sPtvdurZS/vHpT7elXOzUI+w5n/a2h1bZWRFd4CQjQkHLVR8XKT/PKT/PKyS8n//Tj8vcPNr5/sPHdkt7ULWM/Lp0fn1Z7+tMmUvsg8XHjx8zbQPH2iH+FWbZH6ApPAQEaUq76sFi5c1+5c185MzadvjD1+wtTJy9ODV9U/70xfPHGyYtT6QtT6QvX//fGHbWn+PbRAQCA/SP+qLtpD9EVngICNP44s7HyuDKXf+T70dOT7a/5RyuPK3+c2RDwVoYEEKAxfmtFXqwq65WH2DrQlPWKvFgdn8HUkWeAAI1peebKjHIpt+V7mLMn26Xc1pUZZVqeEfBWhgTwuwAECRzgdwEIEjhAsJ5FbltwJQjCAwTrWee2BReDIExAsJ5tbttLMXqdPadPtQa5SA1rQnF/YB2XbPYMEKznJLftmRi6AmkLEKznJLftTqHVv/TvcmUAu2MRXdGFgGA9J7ltdwroCsQtIFjPSW6bO9i04qosy+T6YJFkklpyu3HAUyc3jR8YS3THYuzVvq1LIM+gtKLIJcuM6yLT29Rh6RjVjVoosLmWcjoGkWS6Id/YQE2FrvAMEKznJLfNGcpan9u8hp5hPVbjypTmhYmJ/ozVvo0lmL5XzK7Qi6PrI32m9VZdxpBq9NYHEc4hF7+hdNEV3gCC9Zzktq2GGz6qGZ/oLFdo/aij0bzsqmm1byPq8UhKmlxhKImcksa0QLK1Fjkv8zG6wjNAsJ6T3DZ7JHN9bqeuaHRsLtbNXaLbuNq3RSmGY9GJKxinZOiKIAKC9Zzkttkj2etzk6cr6aTh09ewUj25jDdv4Xrjat80UjJpXPje+gyKtLLhzIqjTp9vmTaYXgt0RQcAwXpOctucoZz1ufXNpiW3jV8DQP/EXqLbfKVCop8H6V9Cpqttw/U/dTVh+G0B2xVEDVrZ6ApxgGA9J7ltwSUZwNW+ERCs5yS3LbgkCotfsOKSx6EBBOs5yW0LLkkDV/tGVMDvAhAkcIDfBSBI4AC/C0CQwAF+F4AggQP8LgBBAgcI1sPcNhJ8QLAe5raR4AOC9YTmtmXZi/sgzBlUl0ElHo6n9Sxe2xIhuqMEBOsJzW3LMrrCO9AVHaPzuW0D3rlCx29X+AO6omN0PrdtAF3hFeiKjuEqt23OPXPvzdbynOR7Sd7tR99GbnUDoPlecUKCf9cgHXc1h2AtM9z6tBahc/ZrYqer7TXmwrmAYD0XuW1WRJuR5DYkobX3kh5ORYCaW9jn6mxXEGEn01SyTHVPxyKRCH3IOshwa9Nahc4Z81jqmnYXc+EsQLBe+7ltp390w3Ae0nwvjcPNcR/eW877ruBMZdqcjkWSUjoWSUpyMyHrKMNtyryaQ+fMeSx0jfsFmIBlAoL12s9tm13BTHK34ArmQcAUbssVDQniuEwnuR/dltNyQ+fceTi6xv1CV7ABwXrt57bNEW12kpvjCvMZlMlPfF3WGRSVkGVPICUjkYj++a6dz1hkuNnTckPnzHn4upgLdwYI1nOR2zZHtJlJbp4rZObVtoO4Hee7ImZ9sa0XTFzXGy946fEW03JD56x5+LqYC3cGCNYLfm4bQUCwXtBz2+1ntTHk3TuAYL0g57YRRAX8LgBBAgf4XQCCBA7wuwAECRzgdwEIEjjA7wIQJHCAYD3MbSPBBwTrYW4bCT4gWM+z3LZ2I4KruKY5fcpRCR0hur/DDAjW8yy3ja7oLOgKgXiW2/bmeLV77/10RXuBVa9irugKgXiW20ZXeDnKDLpCIF7ltvXADBHMZMUnKEy3XbPW72Kq0NsZSWtuutUwhHE3e6PcJJmTJrpxc95ORml7jSntFgDBei5z29SRa/jjTHSM3zJJTc5pcAVHxUnSmlUwbRZedjwdAzIzYv6rU0x121GUMKa0nQMixer1+tO754tS/Ond825z29TVtiHaz3tHDZlMmeEKnoqjpLVlwYwtTFUtiEpMzla3G2W175gxsgJEitXr9aIUr/8jX5TibnPbDFc0Dg27M2v1A55+7524wj5pbVkwY4vEynFzXMEOXqMrOgIIU6rX60/lD2uFY/vfgFrh2FP5Dy5y28QfMjDENX1cLduqYHUtcF523Pb4ZqrbjcKUdruAMCX1i0Jzhfp10Vpum7zgTDK+K2TWuTx7Av1D2HS1zVSR+Ulr268l44U152rbeHw3R+u7aRhmNwpT2u0CwpSKE0efy+/VCscWP/9trXDs+fR7pYmjnue2w/vfboh3gDClohT/9fHx5zOH9r8Bz2cO/bp2vCjFPc5tW/yCteNBasxt9w4gTOn2cN8/y6M7hVOTIwM7hVP10ujt4T4Pc9vkLxgRxA0gTGnzzhe3h/vItnnnC2HqCOIc8LsABAkc4HcBCBI4wO8CECRwgMvxdQBs2DxvHhzaLnAr7/vLh60nmweHtgvcyre6D5jbRqwJoyvc5bYbdzOE7z8lfPkve39u+gijK9zktr2KmXUh6AqhuJVvdR/c5LaDd49TR33KSx0JA13RLq3ug5vcNrpCLOiKdml1H9rObRM338Way+cSMUvmQlj6IPKecNvIskzfTd5aSFqHd+930kqOyqzq/aiBhhvn6dnYUfIuim6H0RUuctvkB6YhMM1ceNsqP2QXWXYVkrYuyTQJL8xtynwwBrYQJe+W6HboXOEqt21yheEdM34087KmtoEbD0LSnJKYk3DD3BZ/zcCiTouSuiOkGkZXtJ/btnAF+U1gm8B24gq3IWlOSU5dwUyo2g7UhdEVLnEr73wfXOe2+a4wnlrZnkHZHg2th6Sta7VwBTfMbecKJ1HyLoxuh84VLnPb/DMo/VSFWHib2my82rb+vGwjJG0sllkSexJOmJucnDPQNkrehdHtcLlCTG6bS/B+rYswCZkrBOS2KaRkhMpwd9IUGNr2jHC5otO5bQbECQZ+T3QL4XIF5rYRJ4TLFQjihCAcUW7lg7APSC8RhCPKrXwQ9gHpJYJwRLmVD8I+IL1EEI4ot/Kt7gOut41YE0ZXYG4bsSaMrsDcthXEXUpe0zV/eT+MrsDcthXoinC6AnPbPoGuaAG38pjb7o5jDV3RCm7lMbfNucvKgYq5ZkM+iZHw1sZ1Rwi7DcLoitDktm1VWDXTi1aa5EwvReBD2G0QOleEKbftINtkrtk6y2qcH4IfN22DMLoiLLltWxVmzeiKsLkiXLntVryn12ztii4MYbdB6FwRpty2rQqrZmeu6KIQdhuEyxWY20acEDJXYG4bcUC4XIG5bcQJ4XIF5rYRJ/SOK7Bh87Z5cGi7wK287y8ftp5sHhzaLvBZHkECCPhdAIIEDhCsh7ltJPiAYD3MbSPBBwTrYW7bHvc51U4kXbvm5gAP7m0BTwpxDua27UFXuKILXYG57Y7R4WKC9+pz6EJXYG67Y6ArVLrQFeHKbZuD16z0HRWHbcQmqPsaTbvATB4SxbBnACo2ws+Fs191MISkrF58wkFEWMWQp6WkTXPqe+lDQh3cDW+ZcOW2zf3Ndepqzdno9DZrF5j7SxRDz6AfZvSLY5ELN/SmJ7J/8Un9SERf3JKV9dU/HYKzTDi4G94y0tjl/FrDFaHJbVMRU+4Hqzmnyt0F5jwsVxhPe5hPMBOwFuoOXvxml3QskpTSsUhS0lTYL6/d54vYLC64G94y5y6PzT4qq64ITW6bDNMxDi0tbup0F9jzOHQF/cFNbeTvgcx3BbcY2g9pljJVWIhd8dlXV+ZWy09e1MzXFb2b25bM68aTZ8yylIxEYrGIeec4u8Cex9kZFONF4LjC4vzN/sWXpWQkEtG//LTzKM7La3YaVajghDq4G94yI5eu/lAor27XVrf3tN8+9Xpum3IRo07aI9TOsXeBPY9ejMOrbRtX0FfFSc53heWLT1RmdfLHc4XxYkZUQh3cDW+Zj6VrM8vllWe7S892C9u7mNtugR7YhS4BBOud/HLyTz8uqyltLbSNuW0OPbALXQkI1jszNp2+MPX7C1MnL04NX5zC3LYNPbALXQj4XQCCBA7wuwAECRzgdwEIEjjA7wIQJHCA3wUgSOAAwXqY20aCDwjWw9w2EnxAsF6Ic9vNOxF4d26L+69rD+6J6G1AsF6Ic9voiq4BBOuFOLdtdyyiKwIDCNYLcW4bXdE1gGC90OS2mZk7Ompn2C0wJCEM24KVbO5tQLBeWHLbjGfMrjDkb5i5qIAmm3sbEKwXpty24UvE5ApehewCgpXh7G1AsF5octtEZYZj0YkrAp9s7m1AsF5YcttSMmnMXlqfQRnP8QKebO5tQLBeaHLbxHmQfjFsutpmB6O7INnc24BgPcxtI8EHBOthbhsJPiBYD3PbSPABvwtAkMABfheAIIED/C4AQQIH+F0AggQO8LsABAkc4HcBCBI4/h9OiFM9AsfdQAAAAABJRU5ErkJggg==" alt="" />

1.1 在layout fragment_main中添加一个按钮btnOpenAnohterFragment, 用于打开另一个Fragment;

replace, add, hide, show

public class PlaceholderFragment extends Fragment {

    public PlaceholderFragment() {
} @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
rootView.findViewById(R.id.btnOpenAnohterFragment).setOnClickListener(
new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
getFragmentManager().beginTransaction()
.addToBackStack(null) //支持返回键,否则点返回直接退出app
.replace(R.id.container, new AnotherFragment())
.commit();
}
});
return rootView;
}
}

1.2 在AnotherFragment 添加按钮btnBack,用于返回上一个Fragment

public class AnotherFragment extends Fragment {

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View root = inflater.inflate(R.layout.fragment_another, container, false); root.findViewById(R.id.btnBack).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
getFragmentManager().popBackStack();
}
});
return root; //super.onCreateView(inflater, container, savedInstanceState);
}
}

Android Fragment基础及使用

2. Fragment 的生命周期 及相关的实际应用

Android Fragment基础及使用

比Activity的生命周期多很多,

onCreate,onCreateView,onPause是最常用的

创建两个Fragment, A, B

1. 打开FragmentA -> 暂停FragmentA -> 恢复FragmentA  -> 关闭FragmentA,生命周期变化如下

打开Fragment A
08-13 19:18:32.062 D 27014 27014 FragmentA: onAttach
08-13 19:18:32.062 D 27014 27014 FragmentA: onCreate
08-13 19:18:32.062 D 27014 27014 FragmentA: onCreateView
08-13 19:18:32.062 D 27014 27014 FragmentA: onActivityCreated
08-13 19:18:32.062 D 27014 27014 FragmentA: onStart
08-13 19:18:32.062 D 27014 27014 FragmentA: onResume A Fragment 活动 暂停 Fragment A
08-13 19:19:32.352 D 27014 27014 FragmentA: onPause
08-13 19:19:32.382 D 27014 27014 FragmentA: onStop 恢复Fragment A
08-13 19:20:11.102 D 27014 27014 FragmentA: onStart
08-13 19:20:11.102 D 27014 27014 FragmentA: onResume 退出 Fragment A
08-13 19:20:52.022 D 27014 27014 FragmentA: onPause
08-13 19:20:52.472 D 27014 27014 FragmentA: onStop
08-13 19:20:52.472 D 27014 27014 FragmentA: onDestroyView
08-13 19:20:52.472 D 27014 27014 FragmentA: onDestroy
08-13 19:20:52.472 D 27014 27014 FragmentA: onDetach

2. 打开FragmentA -> 由FragmentA打开FragmentB  -> 从FragmentB返回FragmentA,生命周期变化如下

打开Fragment A
08-13 19:51:09.227 D 5395 5395 FragmentA: onAttach
08-13 19:51:09.227 D 5395 5395 FragmentA: onCreate
08-13 19:51:09.237 D 5395 5395 FragmentA: onCreateView
08-13 19:51:09.237 D 5395 5395 FragmentA: onActivityCreated
08-13 19:51:09.237 D 5395 5395 FragmentA: onStart
08-13 19:51:09.237 D 5395 5395 FragmentA: onResume 从A 打开 B
08-13 19:51:12.097 D 5395 5395 FragmentA: onPause
08-13 19:51:12.097 D 5395 5395 FragmentA: onStop
08-13 19:51:12.097 D 5395 5395 FragmentA: onDestroyView
FragmentA内部的View组件完成
08-13 19:51:12.097 D 5395 5395 FragmentB: onAttach
08-13 19:51:12.097 D 5395 5395 FragmentB: onCreate
08-13 19:51:12.097 D 5395 5395 FragmentB: onCreateView
08-13 19:51:12.107 D 5395 5395 FragmentB: onActivityCreated
08-13 19:51:12.107 D 5395 5395 FragmentB: onStart
08-13 19:51:12.107 D 5395 5395 FragmentB: onResume
B处于稳定状态
从B返回A
08-13 19:51:36.067 D 5395 5395 FragmentB: onPause
08-13 19:51:36.067 D 5395 5395 FragmentB: onStop
08-13 19:51:36.067 D 5395 5395 FragmentB: onDestroyView
08-13 19:51:36.067 D 5395 5395 FragmentB: onDestroy
08-13 19:51:36.067 D 5395 5395 FragmentB: onDetach
08-13 19:51:36.077 D 5395 5395 FragmentA: onCreateView
08-13 19:51:36.077 D 5395 5395 FragmentA: onActivityCreated
08-13 19:51:36.077 D 5395 5395 FragmentA: onStart
08-13 19:51:36.077 D 5395 5395 FragmentA: onResume

可以看到,两个Fragment使用replace方法切换的时候,是A完全销毁以后,才加载的B

3. 创建一个带侧边栏的 Activity 以及使用

新建 SliderActivity: 类型Navigation Drawer Activity, 可以看到SDK默认创建了几个文件

SliderActivity.java
NavigationDrawerFragment.java activity_slider.xml
fragment_navigation_drawer.xml
fragment_slider.xml

* 默认效果: onCreateView中有一个ListView,来显示数据

在 NavigationDrawerFragment.java 中 修改onCreateView 中的Adapter,添加  "CARLOZ LIB"

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mDrawerListView = (ListView) inflater.inflate(
R.layout.fragment_navigation_drawer, container, false);
mDrawerListView
.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
selectItem(position);
}
});
mDrawerListView.setAdapter(new ArrayAdapter<String>(getActionBar()
.getThemedContext(),
android.R.layout.simple_list_item_activated_1,
android.R.id.text1, new String[] {
getString(R.string.title_section1),
getString(R.string.title_section2),
getString(R.string.title_section3),
"CARLOZ LIB",}));
mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
return mDrawerListView;
}

在 SliderActivity.java 中修改 onSectionAttached 中的添加case语句,即可出现如下效果

public void onSectionAttached(int number) {
switch (number) {
case 1:
mTitle = getString(R.string.title_section1);
break;
case 2:
mTitle = getString(R.string.title_section2);
break;
case 3:
mTitle = getString(R.string.title_section3);
break;
case 4:
mTitle = "CARLOZ LIB";
break;
}
}

Android Fragment基础及使用

* 自定义侧边栏

aaarticlea/png;base64,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" alt="" />

aaarticlea/png;base64,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" alt="" />

创建一个Fragment:CarlozLibFragment.java,并为其创建一个布局carloz_lib_webview.xml,内部有一个WebView控件,顺便在AndroidManifest.xml中添加Intent访问权限;在CarlozLibFragment中重写onCreateView方法,让WebView访问我的个人网站(http://carloz.duapp.com);

public class CarlozLibFragment extends Fragment {
private String TAG = "CARLOZ"; @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View root = inflater.inflate(R.layout.carloz_lib_webview, container, false); WebView wv =(WebView)root.findViewById(R.id.wv);
Log.d(TAG, "load url: carloz lib");
wv.loadUrl("http://carloz.duapp.com"); return root;
}
}

将NavigationDrawerFragment.java 中 onCreateView中ListView相关内容删除,用自定义布局 diy_slider_content.xml (目录res/layout)替换;diy_slider_content中定义了一个按钮,用来打开刚刚创建的CarlozLibFragment;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.diy_slider_content, container, false); root.findViewById(R.id.btnJump).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mDrawerLayout != null) {
// 隐藏侧边栏
mDrawerLayout.closeDrawer(mFragmentContainerView);
}
if(mCallbacks != null) {
mCallbacks.onGotoCarlozLibClicked();
}
}
}); return root;
}

onGotoCarlozLibClicked()这个接口是自定义接口,在 静态接口 NavigationDrawerCallbacks 中新增定义

public static interface NavigationDrawerCallbacks {
/**
* Called when an item in the navigation drawer is selected.
*/
void onNavigationDrawerItemSelected(int position); // 通过回调传给主界面
void onGotoCarlozLibClicked();
}

需要在主界面SliderActivity中实现该回调方法, 因为主界面实现了 NavigationDrawerFragment.NavigationDrawerCallbacks 接口

@Override
public void onGotoCarlozLibClicked() {
// 需要实现 NavigationDrawerFragment.java Callback中新增的方法
// 在容器 container 中添加 fragment CarlozLibFragment
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, new CarlozLibFragment())
.commit();
}

运行结果如下:

Android Fragment基础及使用

4. 创建一个 Tabbed Activity 并使用

默认样式:

自定义:

aaarticlea/png;base64,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" alt="" />

aaarticlea/png;base64,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" alt="" />

* 创建drawble目录,并在里面放三张图片img1, img2, img3;

* 创建三个ImageFragment, 分别加载三种图片

* 在 TabsActivity 中调用三个Fragment

public class Image1Fragment extends Fragment {

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
ImageView iv = new ImageView(getActivity());
iv.setImageResource(R.drawable.img1);
return iv;
}
}
public class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
} @Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment (defined as a static inner class
// below).
switch(position) {
case 0:
return new Image1Fragment();
case 1:
return new Image2Fragment();
case 2:
return new Image3Fragment();
} return null;
//return PlaceholderFragment.newInstance(position + 1);
}

结果如下

Android Fragment基础及使用

5. 多个Fragment的切换和状态保存

Fragment的操作有 add, replace, remove三个方法

从2可以看出,使用replace方法来切换Fragment时会完全销毁上一个Fragment,这样再切换回上一个Fragment时,它的状态就会丢失;

5.1 现在 有一个问题,当一个Activity中 使用了 多个同级Fragment,那么多个Fragment切换时如何保存Fragment的状态?

智慧的网友们给出了解决方案:把用到的Fragment全部使用add方法添加, 使用hide、show方法来控制,需要使用哪个,就显示哪个。缺点是:几个Fragment会一直占用内存,直到Fragment销毁

aaarticlea/png;base64,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" alt="" />

定义一个Activity:FragmentSwitchActivity,用于存放Fragment

定义两个Fragment:PlaceholderFragment 和 FragmentSwitch1,用于演示 切换操作

定义一个Callback:FragmentSwitchCallBack,用于管理Fragment 和 切换逻辑

使用这个Callback,控制再多的Fragment都行,这里为了简单,只控制两个

public interface FragmentSwitchCallBack {
//使用一个List管理当前添加的Fragment
public void addFragment(String tag);
public void removeFragment(String tag);
public void openFragmentByTag(String tag);
}

Callback在Fragment中使用如下:

public class FragmentSwitchX extends Fragment {
public static String TAG = "FragmentSwitch1";
private FragmentSwitchCallBack mSwitchCallBack; @Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
Log.d(TAG, "onAttach");
mSwitchCallBack = (FragmentSwitchCallBack) activity;
mSwitchCallBack.addFragment(TAG);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View root = inflater.inflate(R.layout.fragment_switch1, container, false); root.findViewById(R.id.btnSwitchToPlaceholderFragment).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(null != mSwitchCallBack){
Log.d(TAG, "switch to PlaceholderFragment");
mSwitchCallBack.openFragmentByTag(PlaceholderFragment.TAG);
}
}
});
Log.d(TAG, "onCreateView");
return root;
} @Override
public void onDetach() {
// TODO Auto-generated method stub
Log.d(TAG, "onDetach");
mSwitchCallBack.removeFragment(TAG);
super.onDetach();
}
}

在Activity中实现该CallBack,用来管理 Fragment List, 将需要的Fragment显示,不需要的隐藏:

public class FragmentSwitchActivity extends FragmentActivity implements
FragmentSwitchCallBack { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fragment_switch);
if (savedInstanceState == null) {
getSupportFragmentManager()
.beginTransaction()
.add(R.id.container, new PlaceholderFragment(),
PlaceholderFragment.TAG).commit();
}
} private List<String> fragmnetList;
@Override
public void openFragmentByTag(String tag) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
if(null == ft) return;
if (null == fragmnetList)
fragmnetList = new ArrayList<String>(); if (fragmnetList.contains(tag)) {
for (String s : fragmnetList) {
if (s == tag)
ft.show(fm.findFragmentByTag(s));
else
ft.hide(fm.findFragmentByTag(s));
}
} else {
if (PlaceholderFragment.TAG == tag) {
ft.add(R.id.container, new PlaceholderFragment(), tag);
} else if (FragmentSwitch1.TAG == tag) {
ft.add(R.id.container, new FragmentSwitch1(), tag);
}
for (String s : fragmnetList) {
ft.hide(fm.findFragmentByTag(s));
}
}
ft.commit();
}
@Override
public void addFragment(String tag) {
if (null == fragmnetList)
fragmnetList = new ArrayList<String>();
fragmnetList.add(tag);
}
@Override
public void removeFragment(String tag) {
if (null != fragmnetList) {
fragmnetList.remove(tag);
}
}
}

两个Fragment切换时的生命周期如下

打开FragmentSwitchActivity,顺便添加第FragmentPlaceholder
08-14 16:30:43.601 D 5967 5967 FragmentPlaceholder: onAttach
08-14 16:30:43.601 D 5967 5967 FragmentPlaceholder: onCreate
08-14 16:30:43.701 D 5967 5967 FragmentPlaceholder: onCreateView
打开FragmentSwitch1
08-14 16:30:49.101 D 5967 5967 FragmentSwitch1: onAttach
08-14 16:30:49.101 D 5967 5967 FragmentSwitch1: onCreate
08-14 16:30:49.161 D 5967 5967 FragmentSwitch1: onCreateView
以后再切换,生命周期不再变化

Android Fragment基础及使用

5.2 二级Fragment的状态保存

此问题以后再分析~

6. 单个Fragment的横竖屏切换及状态保存

6.1 横竖屏切换时的Fragment生命周期变化如下, 会先销毁,再重新创建

08-13 20:13:59.127 D 7089 7089  FragmentA: onPause
08-13 20:13:59.127 D 7089 7089 FragmentA: onStop
08-13 20:13:59.127 D 7089 7089 FragmentA: onDestroyView
08-13 20:13:59.127 D 7089 7089 FragmentA: onDestroy
08-13 20:13:59.127 D 7089 7089 FragmentA: onDetach
08-13 20:13:59.177 D 7089 7089 FragmentA: onAttach
08-13 20:13:59.177 D 7089 7089 FragmentA: onCreate
08-13 20:13:59.197 D 7089 7089 FragmentA: onCreateView
08-13 20:13:59.197 D 7089 7089 FragmentA: onActivityCreated
08-13 20:13:59.197 D 7089 7089 FragmentA: onStart
08-13 20:13:59.207 D 7089 7089 FragmentA: onResume

6.2 默认情况下横竖屏切换后整个FragmentActivity会被销毁并重建,所有Fragment中的成员变量也会丢失,但所有的Fragment状态数据如上所述会被保留并还原,这个时候所有的视图都会重新创建。

未采取任何解决方案时的转屏log

08-14 10:17:07.389 D 6620  6620     ScreenRotationActivity:           onCreate
08-14 10:17:07.389 D 6620 6620 ScreenRotationActivity-Fragment: onCreate
08-14 10:17:07.389 D 6620 6620 ScreenRotationActivity-Fragment: onCreateView
开始转屏
08-14 10:17:13.259 D 6620 6620 ScreenRotationActivity-Fragment: onDestroyView
08-14 10:17:13.259 D 6620 6620 ScreenRotationActivity-Fragment: onDetach
08-14 10:17:13.319 D 6620 6620 ScreenRotationActivity-Fragment: onCreate
08-14 10:17:13.339 D 6620 6620 ScreenRotationActivity: onCreate
08-14 10:17:13.349 D 6620 6620 ScreenRotationActivity-Fragment: onCreateView
转屏完成

6.2.1 解决方法一:在相应的Activity配置中加上android:configChanges="orientation|screenSize"设置,这样切换时就不会销毁FragmentActivity,所有的Fragment的状态及视图也就会保持。

<activity
android:name=".v6_1.ScreenRotationActivity"
android:configChanges="orientation|screenSize"
android:label="@string/title_activity_screen_rotation" >
</activity>
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
Log.d(TAG, "onConfigurationChanged");
}

使用解决方案一以后的生命周期变化如下,可以解决问题:

08-14 10:21:22.429 D 7697  7697  ScreenRotationActivity:           onCreate
08-14 10:21:22.429 D 7697 7697 ScreenRotationActivity-Fragment: onCreate
08-14 10:21:22.429 D 7697 7697 ScreenRotationActivity-Fragment: onCreateView
开始转屏
08-14 10:21:26.249 D 7697 7697 ScreenRotationActivity: onConfigurationChanged
转屏完成

6.2.2 解决方法二:在使用FragmentTransaction.add()方法添加fragment时设置第三个tag参数,随后在还原时可通过FragmentManager.findFragmentByTag()方法找回还原的fragment.

Fragment f = getFragmentManager().findFragmentByTag(FragmentA);
if(null == f) {
Log.d(TAG, "onCreate: new FragmentA");
f = new PlaceholderFragment();
}
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, f, FragmentA)
.commit();
}

经我实验,Fragment虽然找回来了,但是还是回执行onCreateView方法,UI组件状态已丢失,哪位大神有好的方法,请@我, 简略版生命周期如下

08-14 11:01:43.639 D 10628    10628    ScreenRotationActivity:           onCreate
08-14 11:01:43.649 D 10628 10628 ScreenRotationActivity: onCreate: new FragmentA
08-14 11:01:43.659 D 10628 10628 ScreenRotationActivity-Fragment: onCreate
08-14 11:01:43.659 D 10628 10628 ScreenRotationActivity-Fragment: onCreateView
开始转屏
08-14 11:01:48.129 D 10628 10628 ScreenRotationActivity-Fragment: onDestroyView
08-14 11:01:48.129 D 10628 10628 ScreenRotationActivity-Fragment: onDetach
08-14 11:01:48.199 D 10628 10628 ScreenRotationActivity-Fragment: onCreate
08-14 11:01:48.199 D 10628 10628 ScreenRotationActivity: onCreate
08-14 11:01:48.229 D 10628 10628 ScreenRotationActivity-Fragment: onCreateView
转屏完成

6.2.3 解决方案三: Fragment生命周期 onPause之后 onDestroyView之前,会执行 onSaveInstanceState 方法。

生命周期如下:

08-14 11:39:50.149 D 12536    12536    ScreenRotationActivity-Fragment:  onPause
08-14 11:39:50.149 D 12536 12536 ScreenRotationActivity-Fragment: onSaveInstanceState
08-14 11:39:50.149 D 12536 12536 ScreenRotationActivity-Fragment: onDestroyView
08-14 11:39:50.159 D 12536 12536 ScreenRotationActivity-Fragment: onDestroy
08-14 11:39:50.159 D 12536 12536 ScreenRotationActivity-Fragment: onDetach
08-14 11:39:50.209 D 12536 12536 ScreenRotationActivity-Fragment: onCreate
08-14 11:39:50.209 D 12536 12536 ScreenRotationActivity: onCreate
08-14 11:39:50.229 D 12536 12536 ScreenRotationActivity-Fragment: onCreateView

我们可以在onSaveInstanceState方法中,保存关键数据

@Override
public void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
Log.d(TAG, "onSaveInstanceState");
outState.putString("carloz", "Carlo Zhang");
super.onSaveInstanceState(outState);
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate");
if(null != savedInstanceState) {
Log.d(TAG, "onCreate: " + savedInstanceState.getString("carloz"));
}
}

结果如下:

08-14 11:44:51.949 D 13933    13933    ScreenRotationActivity:            onCreate
08-14 11:44:51.959 D 13933 13933 ScreenRotationActivity: onCreate: new FragmentA
08-14 11:44:51.979 D 13933 13933 ScreenRotationActivity-Fragment: onCreate
08-14 11:44:51.979 D 13933 13933 ScreenRotationActivity-Fragment: onCreateView
开始转屏
08-14 11:44:55.249 D 13933 13933 ScreenRotationActivity-Fragment: onPause
08-14 11:44:55.259 D 13933 13933 ScreenRotationActivity-Fragment: onSaveInstanceState
08-14 11:44:55.259 D 13933 13933 ScreenRotationActivity-Fragment: onDestroyView
08-14 11:44:55.259 D 13933 13933 ScreenRotationActivity-Fragment: onDestroy
08-14 11:44:55.259 D 13933 13933 ScreenRotationActivity-Fragment: onDetach
08-14 11:44:55.329 D 13933 13933 ScreenRotationActivity-Fragment: onCreate
08-14 11:44:55.329 D 13933 13933 ScreenRotationActivity-Fragment: onCreate: Carlo Zhang
08-14 11:44:55.329 D 13933 13933 ScreenRotationActivity: onCreate
08-14 11:44:55.349 D 13933 13933 ScreenRotationActivity-Fragment: onCreateView
转屏完成

其他如 保存在文件或者数据库中的方法就不再列举了

7. Fragment 与 Activity 通信

7.1 Activity 向 Fragment 传递数据

在Activity中创建Bundle数据包,并调用Fragment的setArguments(Bundle bundle)方法,即可将Bundle数据包 传给Fragment

7.2 Fragment 向 Activity 传递数据

定义一个CallBack接口,让Activity实现改接口,在Fragment中即可调用该Callback的接口,代码见 5.1

-------------------------------------------

 工程代码:Android Fragment基础及使用FragmentDemo.zip