计算机113 郭超
Fragment的基本使用
-如何在屏幕中嵌入两个Fragment
1.   首先创建两个java类,让这个类继承Fragment
public class ListFragment extends Fragment{
   ListView lv;
   MainActivity ac;
   String [] items = {"aaa","bbb","ccc"};
   //和activity方法相似
public void onActivityCreated(Bundle savedInstanceState) {
      super.onActivityCreated(savedInstanceState);
ArrayAdapter<String> adapter = new ArrayAdapter<String>
(ac,android.R.layout.simple_list_item_1 ,items);
      lv.setAdapter(adapter);
      lv.setOnItemClickListener(new OnItemClickListener() {
   public void onItemClick(AdapterView<?> parent, View view,
              int position, long id) {
              ac.sendMsgToTextFragment(position);
        }
      });
   }
//返回一个activity有实例
   public void onAttach(Activity activity) {
      super.onAttach(activity);
      ac = (MainActivity) activity;
   }
   //创建在此碎片上显示的视图
   public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
      View v = inflater.inflate(R.layout.list_fragmentnull);
      lv = (ListView) v.findViewById(R.id.listView1);
      return v;
   }
}

public class TextFragment extends Fragment{
   TextView tv;
public void getMessage(int position){
      tv.setText("position"+position);
}
public void onActivityCreated(Bundle savedInstanceState) {
   }
public void onAttach(Activity activity) {
   }
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.text_fragmentnull);
tv = (TextView) v.findViewById(R.id.textView1);
      return v;
}
}
 
2.   要想将这两个碎片文件组合在一起,就必须通过一个activity。
做法是在这个activity文件中加入fragment标签。如下所示:
<fragment
       android:id="@+id/listf"
<!—设置要包含碎片文件的位置-->        android:name="com.example.android_uplooking_day2.ListFragment"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1" />
    <fragment
        android:id="@+id/tvf"
<!--设置要包含碎片文件的位置-->
android:name="com.example.android_uplooking_day2.TextFragment"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1" />
这样就可以在activity中显示两个碎片文件了。
-两个Fragment之前如何通信
要实现两个碎片之间的通信,就需要在通过activity来实现他们之间的交互。
例如:有两个碎片文件ListFragment和TextFragment。点击ListFragment上面的列表。要在TextFragment上面显示哪一个列被点击了。这就需要ListFragment给TextFragment发一个消息。TextFragment接收到这个消息,将它显示出来。
要实现这一过程,就需要在碎片里面使用activity对象。调用显示碎片的activity对象中的一个方法。这个方法接受到消息后。通过FragmentManager获得TextFragment碎片对象,然后通过TextFragment对象调用TextFragment中的方法,将传递过来的消息打印出来。
FragmentManager fm = getFragmentManager();
      TextFragment tf = (TextFragment) fm.findFragmentById(R.id.tvf);
      tf.getMessage(position);
-如何增加/删除/替换Fragment
-Fragment常用的三个方法:
1.   onActivityCreated类似Activity的onCreate方法
2.   onCreateView中构建界面&获得组件对象  
3.   onAttach获得外部的Activity(上下文)
Tab的替代品 Fragment 在3.0以后才可以使用.

 

posted on 2013-06-24 22:00  Winess  阅读(466)  评论(0编辑  收藏  举报