Fragment详解-android学习之旅(四十八)
2015-06-26 18:50
465 查看
Fragment的设计哲学
Fragment的继承体系
Fragment的开发
大部分都会继承如下的三个方法
Fragment与Activity的通信
Fragment与Activity交互信息
Fragment的管理与Fragment事务
开发兼顾分辨率的应用
开发显示图书详情的Fragment
图书想详情Fragment类机器布局
package peng.liu.test; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; /** * Created by lplp on 2015/6/26. */ public class BookDetailFragment extends Fragment { public static final String ITEM_ID = "item_id"; BookContent.Book book; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments().containsKey(ITEM_ID)){ book = BookContent.ITEM_MAP.get(getArguments().getInt(ITEM_ID)); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View bookView = inflater.inflate(R.layout.cell,container,false); if (book != null){ ((TextView)bookView.findViewById(R.id.title)).setText(book.title); ((TextView)bookView.findViewById(R.id.desc)).setText(book.desc); } return bookView; } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/title" android:padding="16dp" style="?android:attr/textAppearanceLarge"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/desc" android:padding="16dp" style="?android:attr/textAppearanceLarge"/> </LinearLayout>
图书列表类斐然关门他,因为继承了ListFragment,所以不需要布局文件,setLsitAdapetr就可以了
package peng.liu.test; import android.app.Activity; import android.app.ListFragment; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; /** * Created by lplp on 2015/6/26. */ public class BookListFragment extends ListFragment { private CallBacks mCallBacks; public interface CallBacks{ public void onItemSelected(Integer id); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new ArrayAdapter<BookContent.Book>(getActivity(),android.R.layout.simple_list_item_activated_1,android.R.id.text1,BookContent.ITEMS)); } @Override public void onAttach(Activity activity) { super.onAttach(activity); if (!(activity instanceof CallBacks)){ throw new IllegalStateException("BookListFragment所在的Activity必须实现CallBacks接口"); } mCallBacks = (CallBacks)activity; } @Override public void onDetach() { super.onDetach(); mCallBacks = null; } @Override public void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); mCallBacks.onItemSelected(BookContent.ITEMS.get(position).id); } public void setActivateOnItemClick(boolean activateOnItemClick){ getListView().setChoiceMode(activateOnItemClick ? ListView.CHOICE_MODE_SINGLE:ListView.CHOICE_MODE_NONE); } }
主Activity类及其布局
package peng.liu.test; import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.RadioButton; import android.widget.TextView; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; public class MainActivity extends Activity implements BookListFragment.CallBacks{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public void onItemSelected(Integer id) { Bundle bundle = new Bundle(); bundle.putInt(BookDetailFragment.ITEM_ID,id); BookDetailFragment fragment = new BookDetailFragment(); fragment.setArguments(bundle); getFragmentManager().beginTransaction().replace(R.id.bookContainer,fragment).commit(); } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <fragment android:layout_width="1dp" android:layout_height="fill_parent" android:name="peng.liu.test.BookDetailFragment" android:id="@+id/bookDetail" android:layout_weight="1"/> <FrameLayout android:layout_width="1dp" android:layout_height="fill_parent" android:id="@+id/bookContainer" android:layout_weight="3"/> </LinearLayout>
相关文章推荐
- Android中将bitmap转换成单色的BMP图片
- 在Windows下搭建Android开发环境
- Android(Lollipop/5.0) Material Design(二) 入门指南
- Android 仿美团网,大众点评购买框悬浮效果之修改版
- android EditText控制光标的位置
- Android 控件的显示隐藏上下左右移动动画
- Android的monkey测试
- android 中一个工程引用另一个工程
- Android开发的一些坑
- android菜鸟学习笔记3----关于AndroidMainfest.xml
- Android 中LruCache 原理与编程
- 初用Android studio出现的问题
- android 巧妙利用反射机制得到ListView中的view
- Android基于wheelView的自定义日期选择器(可拓展样式)
- Android自定义对话框实现QQ退出界面
- android4.0蓝牙使能的详细解析 (转载)
- Android开发性能优化大总结
- Android之TextView的样式类Span的使用详解
- java代码中实现android背景选择的selector-StateListDrawable的应用
- Android 使用ViewPager和RadioGroup配合Fragment实现标签页,可点击按钮切换、滑动切换。