其实昨天就学了一些,开始根本不知道Fragment到底是个什么东东,反复看老师的视频。
个人理解,Fragment相当于Activity中的一个个模块。类似微信的界面,点击微信,展示微信的Fragment,点击通讯录,展示通讯录的Fragment。。。
下面是一个简单的例子:在主布局上,点击按钮,跳转到另个fragment。
注:Fragment要引用v4.app.FragmentMainActivity:
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
if(savedInstanceState == null){
getSupportFragmentManager().beginTransaction()
.add(R.id.container,new PlaceholdeFragment())
.commit();
}
}
}
PlaceholdeFragment
public class PlaceholdeFragment extends Fragment {
public PlaceholdeFragment(){
}
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,
Bundle saveInstanceState){
View rootView = inflater.inflate(R.layout.fragment_main,container,false);
rootView.findViewById(R.id.btnShowAnotherFragment).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//呈现anotherFragment 首先获取FragmentManager,然后beginTransation开始进行变化,之后将一个新的fragment添加进来,最后提交。
//为何使用replace而不使用add。replace:使用一个新的fragment替换当前,add为直接添加一个新的fragment。因为之前已经有了一个,所以用replace。
getFragmentManager().beginTransaction().replace(R.id.container,new AnotherFragment()).commit();//传主布局的id,和新的fragment
}
});
return rootView;
}
}
主Fragment的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivityFragment">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="呈现另一个Fragement"
android:id="@+id/btnShowAnotherFragment"
android:layout_gravity="center_horizontal" />
</LinearLayout>
public class AnotherFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle saveInstanceState){ //初始化布局,需要解析的布局是:R.layout.fragment_another 主布局是:container View root = inflater.inflate(R.layout.fragment_another,container,false); return root; } }
AnotherFragment布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="this is another fragment" android:id="@+id/textView" /> </LinearLayout>