@XQF
2017-02-10T13:36:59.000000Z
字数 1932
阅读 1163
《Android探险》
两种fragment从何说起?应该就是一个静态,一个动态,动静主要是说的托管方式。先来把公共部分写了,那就是新建fragment,和Activity;
MainActivity.java
public class MainActivity extends Activity{@Overrideprotected 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"><TextViewandroid:id="@+id/text_view"android:layout_width="match_parent"android:layout_height="wrap_content"/></LinearLayout>
TestFragment.java
public class TestFragment entends Fragment{@Overridepublic 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"><fragmentandroid: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 {@Overrideprotected 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
