您的位置:首页 > 移动开发 > Android开发

android中fragment的实现,完全取代选项卡

2013-06-24 22:00 330 查看
[align=left]计算机113 郭超[/align]
[align=left]Fragment的基本使用[/align]
[align=left]-如何在屏幕中嵌入两个Fragment[/align]
[align=left]1. 首先创建两个java类,让这个类继承Fragment[/align]

[align=left]public class ListFragment extends Fragment{[/align]
[align=left] ListView lv;[/align]
[align=left] MainActivity ac;[/align]
[align=left] String [] items = {"aaa","bbb","ccc"};[/align]
[align=left] //和activity方法相似[/align]
[align=left]public void onActivityCreated(Bundle savedInstanceState) {[/align]
[align=left] super.onActivityCreated(savedInstanceState);[/align]
[align=left]ArrayAdapter<String> adapter = new ArrayAdapter<String>[/align]
[align=left](ac,android.R.layout.simple_list_item_1 ,items);[/align]
[align=left] lv.setAdapter(adapter);[/align]
[align=left] lv.setOnItemClickListener(new OnItemClickListener() {[/align]
[align=left] public void onItemClick(AdapterView<?> parent, View view,[/align]
[align=left] int position, long id) {[/align]
[align=left] ac.sendMsgToTextFragment(position);[/align]
[align=left] }[/align]
[align=left] });[/align]
[align=left] }[/align]
[align=left]//返回一个activity有实例[/align]
[align=left] public void onAttach(Activity activity) {[/align]
[align=left] super.onAttach(activity);[/align]
[align=left] ac = (MainActivity) activity;[/align]
[align=left] }[/align]
[align=left] //创建在此碎片上显示的视图[/align]
[align=left] public View onCreateView(LayoutInflater inflater, ViewGroup container,[/align]
[align=left] Bundle savedInstanceState) {[/align]
[align=left] View v = inflater.inflate(R.layout.list_fragment, null);[/align]
[align=left] lv = (ListView) v.findViewById(R.id.listView1);[/align]
[align=left] return v;[/align]
[align=left] }[/align]
[align=left]}[/align]

[align=left]public class TextFragment extends Fragment{[/align]
[align=left] TextView tv;[/align]
[align=left]public void getMessage(int position){[/align]
[align=left] tv.setText("position"+position);[/align]
[align=left]}[/align]
[align=left]public void onActivityCreated(Bundle savedInstanceState) {[/align]
[align=left] }[/align]
[align=left]public void onAttach(Activity activity) {[/align]
[align=left] }[/align]
[align=left]public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {[/align]
[align=left]View v = inflater.inflate(R.layout.text_fragment, null);[/align]
[align=left]tv = (TextView) v.findViewById(R.id.textView1);[/align]
[align=left] return v;[/align]
[align=left]}[/align]
[align=left]}[/align]
[align=left] [/align]

[align=left]2. 要想将这两个碎片文件组合在一起,就必须通过一个activity。[/align]
[align=left]做法是在这个activity文件中加入fragment标签。如下所示:[/align]

[align=left]<fragment[/align]
[align=left] android:id="@+id/listf"[/align]
[align=left]<!—设置要包含碎片文件的位置--> android:name="com.example.android_uplooking_day2.ListFragment"[/align]
[align=left] android:layout_width="wrap_content"[/align]
[align=left] android:layout_height="fill_parent"[/align]
[align=left] android:layout_weight="1" />[/align]
[align=left] <fragment[/align]
[align=left] android:id="@+id/tvf"[/align]
[align=left]<!--设置要包含碎片文件的位置-->[/align]
[align=left]android:name="com.example.android_uplooking_day2.TextFragment"[/align]
[align=left] android:layout_width="wrap_content"[/align]
[align=left] android:layout_height="fill_parent"[/align]
[align=left] android:layout_weight="1" />[/align]

[align=left]这样就可以在activity中显示两个碎片文件了。[/align]
[align=left]-两个Fragment之前如何通信[/align]
[align=left]要实现两个碎片之间的通信,就需要在通过activity来实现他们之间的交互。[/align]
[align=left]例如:有两个碎片文件ListFragment和TextFragment。点击ListFragment上面的列表。要在TextFragment上面显示哪一个列被点击了。这就需要ListFragment给TextFragment发一个消息。TextFragment接收到这个消息,将它显示出来。[/align]
[align=left]要实现这一过程,就需要在碎片里面使用activity对象。调用显示碎片的activity对象中的一个方法。这个方法接受到消息后。通过FragmentManager获得TextFragment碎片对象,然后通过TextFragment对象调用TextFragment中的方法,将传递过来的消息打印出来。[/align]

[align=left]FragmentManager fm = getFragmentManager();[/align]
[align=left] TextFragment tf = (TextFragment) fm.findFragmentById(R.id.tvf);[/align]
[align=left] tf.getMessage(position);[/align]
[align=left]-如何增加/删除/替换Fragment[/align]

[align=left]-Fragment常用的三个方法:[/align]
[align=left]1. onActivityCreated类似Activity的onCreate方法[/align]
[align=left]2. onCreateView中构建界面&获得组件对象 [/align]
[align=left]3. onAttach获得外部的Activity(上下文)[/align]
[align=left]Tab的替代品 Fragment 在3.0以后才可以使用.[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: