@XQF
2017-02-10T21:36:59.000000Z
字数 1932
阅读 1035
《Android探险》
两种fragment从何说起?应该就是一个静态,一个动态,动静主要是说的托管方式。先来把公共部分写了,那就是新建fragment,和Activity;
MainActivity.java
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
test_frag.xml
<LinearLayout xmlns:android="http://schmemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
TestFragment.java
public class TestFragment entends Fragment{
@Override
public View onCreate(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){
View view=inflater.inflate(R.layout.test_frag,null);
return view;
}
}
所谓的静态使用fragment我当时学习的时候类比四大组件的注册,,。,。哈哈,我看成fragment在托管Acticity中注册。
主要是《第一行代码》上是这样使用的
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:name="包名.TestFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
这样就实现了托管
就是通过FragmentManager动态添加
activity_main.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</FrameLayout>
修改MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInsatnceState){
super.onCreate(savedInstanceState);
FragmentManager fm=getFragmentManager();
TestFragment fragment=fm.findFragmentById(R.id.fragment_container);
if(fragment==null){
fragment=new TestFragment();
fm.beginTransaction().add(R.id.fragment_container,fragment).commit();
}
}
}
一定注意差别,动态还是要好点,这个容器视图还可以用来弄其他fragment。又减少代码了i