本人菜鸟一枚,也就是对刚学的东西有点自己的理解和想法,所以在这里并不能保证我所理解的是正确的,还望各位看官、大牛帮忙指正~
最近正在学习Android的Fragment,因为我的环境是低版本的,所以在这里要用到v4 support兼容包。
在这里先说明一下,因为Fragment是3.0版本以后才有的,所以在3.0版本之前的低版本中要使用Fragment,就要引入v4 support兼容包。
在低版本中使用Fragment的时候特别要注意,不要导错包了!3.0版本之前的低版本中要导入的是:android.support.v4.app.Fragment;在3.0版本及以后中导入的是:android.app.Fragment;
首先,我们先创建一个简单的Fragment:
[创建Fragment]:
SimpleFragment.java
import android.app.Activity;
import android.os.Bundle;
import <strong><span style="color:#ff6666;">android.support.v4.app.Fragment</span></strong>;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class SimpleFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
TextView textView = new TextView(getActivity());
textView.setGravity(Gravity.CENTER_HORIZONTAL);
textView.setText("创建Fragment");
textView.setTextSize(40);
return textView;
}
}
[解释一下]:
该SimpleFragment类继承了android.support.v4.app.Fragment,并且实现了父类的onCreateView方法,该方法主要的作用就是创建一个View并且返回该View。我们可以理解成Fragment在它所在的Activity下显示的样子,就是由这个方法创建的。在这里我们的Fragment的onCreateView方法只是创建了一个TextView并返回该TextView,让其Fragment在它所在的Activity中显示出一行字“创建Fragment”。
现在Fragment已经创建好了,现在我们需要为它创建一个Activity,并将它添加到该Activity中去。
在低版本中要在Activity中显示Fragment也需要一些条件,我们将不是直接继承Activity这个类,而是继承android.support.v4.app.FragmentActivity,原因也就是在低版本中的Activity中并不能显示Fragment,但是在3.0版本及以后中我们完全是可以直接继承Activity。
[小结]:
3.0版本之前的低版本Activity跟FragmentActivity的区别就是:FragmentActivity比Activity多了操作Fragment的方法。(FragmentActivity是Activity的子类)
3.0版本及以后的Activity跟FragmentActivity功能一样。所以在高版本中我们是直接继承Activity就能操作Fragment。
[创建Activity]:
ActivityMain.java
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import cn.jamkong.helloworld.R;
public class ActivityMain extends FragmentActivity{
private FragmentManager fragmentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
[ActivityMain的布局文件]:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<span style="white-space:pre"> </span><fragment
<span style="white-space:pre"> </span>android:name="cn.jamkong.helloworld.view.SimpleFragment"
<span style="white-space:pre"> </span>android:id="@+id/id_fragment"
<span style="white-space:pre"> </span>android:layout_width="match_parent"
<span style="white-space:pre"> </span>android:layout_height="wrap_content"
/>
</FrameLayout>
</LinearLayout>
在activity_main.xml文件中,我只是添加了一个<fragment>标签,在该标签内设置了name、id、和宽高。name的值便是我们创建的SimpleFragment类,要将它的完整名称填进去,这样便可以在我们ActivityMain中看到SimpleFragment中的TextView文字了。
[总结]:
1. 3.0之前版本要使Activity能够操作Fragment,就需要继承FragmentActivity。
3.0及之后版本直接继承Activity便可。
2. 3.0之前版本创建Fragment需要继承的是android.support.v4.app.Fragment;
3.0及之后版本继承android.app.Fragment;
3. Activity在布局文件中可以直接使用<fragment>标签进行添加Fragment。