当前位置: 移动技术网 > 移动技术>移动开发>Android > Android Fragment使用之实例演示

Android Fragment使用之实例演示

2019年07月24日  | 移动技术网移动技术  | 我要评论

          fragment是android honeycomb 3.0新增的概念,在如何使用android fragment中做了关于fragment的详细介绍。本文则主要是通过实例的方式让大家更直观的了解fragment的使用方法。

       首先贴上实例的运行效果截图:

       效果图的左边是一个列表,右边是列表item的详情。

       先看一下布局文件(layout):

xml/html代码

<?xml version=“1.0″ encoding=“utf-8″?> 
<linearlayout xmlns:android=“http://schemas.android.com/apk/res/android”  
  android:orientation=“horizontal” android:layout_width=“match_parent”  
  android:layout_height=“match_parent”> 
  <fragment 
    class=“com.fragment.main.titlesfragment”  
    android:id=“@+id/titles” android:layout_weight=“1″  
    android:layout_width=“0px” android:layout_height=“match_parent” /> 
  <framelayout android:id=“@+id/details” android:layout_weight=“1″  
    android:layout_width=“0px” android:layout_height=“match_parent”  
    android:background=“?android:attr/detailselementbackground” /> 
</linearlayout> 

       布局文件中使用了fragment标签和framelayout标签。如何使用android fragment中介绍了两中嵌入fragment的方法,这个实例中都用到,从布局文件看到有了fragment标签,这是一种使用方法,framelayout标签将会成为第二种加载fragment的载体view。

       看一下程序实现(com.fragment.main.titlesfragment):

java代码

public class titlesfragment extends listfragment {  
  
  int mcurcheckposition = 0;  
  int mshowncheckposition = -1;  
  
  @override 
  public void onactivitycreated(bundle savedinstancestate) {  
    super.onactivitycreated(savedinstancestate);  
                              
    setlistadapter(new arrayadapter<string>(getactivity(),  
        android.r.layout.simple_list_item_activated_1,  
        shakespeare.titles)); //使用静态数组填充列表  
    if (savedinstancestate != null) {  
      mcurcheckposition = savedinstancestate.getint(“curchoice”, 0);  
      mshowncheckposition = savedinstancestate.getint(“shownchoice”, -1);  
    }  
      getlistview().setchoicemode(listview.choice_mode_single);  
      showdetails(mcurcheckposition);  
  }  
  
  @override 
  public void onsaveinstancestate(bundle outstate) {  
    super.onsaveinstancestate(outstate);  
  
    outstate.putint(“curchoice”, mcurcheckposition);  
    outstate.putint(“shownchoice”, mshowncheckposition);  
  }  
  
  @override 
  public void onlistitemclick(listview l, view v, int position, long id) {  
    showdetails(position);  
  }  
  
  /** 
   *显示listview item 详情 
   */ 
  void showdetails(int index) {  
    mcurcheckposition = index;  
      getlistview().setitemchecked(index, true);  
  
      if (mshowncheckposition != mcurcheckposition) {  
  
        detailsfragment df = detailsfragment.newinstance(index);  
         fragmenttransaction ft = getfragmentmanager()  
            .begintransaction();  
        ft.replace(r.id.details, df);  
        ft.settransition(fragmenttransaction.transit_fragment_fade);  
        ft.commit();  
        mshowncheckposition = index;  
      }    
  }  
  
} 

       titlesfragment继承自fragment的子类listfragment,使用了一个静态数组填充列表,重写了onlistitemclick方法,showdetails方法展示listview item的详情。

java代码

detailsfragment df = detailsfragment.newinstance(index);//获取详情fragment的实例  
fragmenttransaction ft = getfragmentmanager().begintransaction();//获取fragmenttransaction 实例  
ft.replace(r.id.details, df); //使用detailsfragment 的实例  
ft.settransition(fragmenttransaction.transit_fragment_fade);  
ft.commit();//提交 

       这里就使用到了android fragment使用中介绍的第二种加载fragment的方法。看一下detailsfragment :

java代码

public class detailsfragment extends fragment {  
  
  /**   * create a new instance of detailsfragment, initialized to   * show the text at 'index'.   */ 
  public static detailsfragment newinstance(int index) {  
    detailsfragment f = new detailsfragment();  
    // supply index input as an argument.      
    bundle args = new bundle();  
    args.putint(“index”, index);  
    f.setarguments(args);  
    return f;  
  }  
  
  @override 
  public view oncreateview(layoutinflater inflater, viewgroup container,  
      bundle savedinstancestate) {  
    if (container == null) {        
      return null;  
    }  
    scrollview scroller = new scrollview(getactivity());  
    textview text = new textview(getactivity());  
  
    int padding = (int) typedvalue.applydimension(  
        typedvalue.complex_unit_dip, 4, getactivity().getresources()  
            .getdisplaymetrics());  
    text.setpadding(padding, padding, padding, padding);  
    scroller.addview(text);  
    text.settext(shakespeare.dialogue[getarguments().getint("index", 0)]);  
    return scroller;  
  }  
} 

       detailsfragment 中使用newinstance(int index)方法产生detailsfragment 实例并接受整型参数,重载了oncreateview方法创建view。

       这个例子基本完成了,主要介绍的是在3.0以后的使用方法,其实fragment在sdk1.6之后就可以使用了,在1.6上使用需要借助 android-support-v4.jar包实现。android-support-v4.jar在:sdk根目录\extras\android \compatibility\v4下可以找到。

          以上就是对android fragment的资料整理,后续继续添加相关资料,谢谢大家对本站的支持!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网