第一步:我們需要一個空的Activity並繼承ActionBarActivity
第二步:創建一個Fragment,怎麼創建一個Fragment呢,先創建一個layout命名FragmentMain,隨後創建對應的java文件,命名MainFragment,文件的命名我們通常以Fragment開頭。對應的java文件必須繼承Fragment,注意導入的包,要是android.support.v4.app.Fragment這個包,隨後重寫onCreatView這個方法。
第三步:創建另一個Fragment,先創建一個layout命名FragmentAnother,隨後創建對應的java文件,命名AnotherFragment,文件的命名我們通常以Fragment開頭。對應的java文件必須繼承Fragment,注意導入的包,要是android.support.v4.app.Fragment這個包,隨後重寫onCreatView這個方法。
第四步:我們需要在Fragment所呈現的Activity上設置,當MainActivity創建的時候進行初始化。首先判斷一下Activiyt的當前狀態,savedInstanceState==null時執行Fragment初始代碼,代碼如下:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(savedInstanceState == null){
getSupportFragmentManager().beginTransaction().add(R.id.container,new MainFragment()).commit();
}
}
}
用getSupportFragmentManager方法獲取到Fragment的管理器,隨後beginTransaction方法開啓事務,添加相對於的fragment,然後commit提交,add第一個參數表示其父組件,第二個就是需要展現的Fragment的了
第五步:然後我們開始配置MianFragment這個java文件,不進行配置的話,即使Activity打開了,Fragment也沒有任何內容,第二步有說到,我們需要重寫onCreatView這個方法,這個方法有個返回值,將Fragment返回出去,也就是要將FragmentMain這個佈局文件返回出去,代碼如下:
public View onCreateView(final LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_main,container,false);
return root;
}
到這裏,我們啓動APP即可顯示第一個Fragment了,如何做到Fragment來切換呢
第六步:在主Fragment中添加一個按鈕,同來切換到另一個Fragment,此時我們就需要在第五步的onCreatView方法中添加代碼了,代碼如下:
public View onCreateView(final LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_main,container,false);
Button btnStart = (Button) root.findViewById(R.id.btnStartAnthoerFragment);
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.container,new AnotherFragment()).commit();
}
});
return root;
}
注意:這裏的findViewById需要在root下引用,因爲這個按鈕在Fragment佈局當中
然後爲這個按鈕設置事件偵聽。如何實現切換Fragment呢,首先調用getFragmentManager方法獲取Fragment管理器,然後開啓事務beginTransaction這個方法。
注意:addToBackStack方法是用來設置返回鍵可操作Fragment,從而返回到上一個Fragment,如果不設置,在跳轉到第二個Fragment時按返回鍵會退出程序,這個方法可根據實際要求添加或捨去。
之前我們用的是add方法來添加Fragment使其顯示,這裏不能使用add方法了,需要使用replace方法來替換原有Fragment,然後commit提交。
第七步:隨後我們就要配置第二個Fragment的java文件AnthorFragment這個文件了,和第五步差不多,要讓第二個Fragment顯示出來,必須要讓他返回出去,代碼如下:
public class AnotherFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_another,container,false);
return view;
}
}
到這裏我們就能顯示主Fragment並點擊上面的按鈕跳轉到第二個Fragment了,並且按返回鍵可以跳回第一個Fragment,有的時候我們需要添加返回按鈕,並不是返回鍵,返回按鈕怎麼設置呢,這裏就需要在第二個Fragment下也就是AnotherFragment下添加代碼了,首先要給其設置一個返回按鈕,然後通過findViewById找到,代碼如下:
public class AnotherFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_another,container,false);
Button btnBack = (Button) view.findViewById(R.id.btnBack);
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getFragmentManager().popBackStack();
}
});
return view;
}
}
爲這個按鈕設置偵聽事件,在按鈕按下時調用getFragmentManager獲取到Fragment管理器,然後調用popBackStack方法即可返回到上一個Fragment了,值得注意的是:上一個Fragment需要設置addToBackStack方法添加到任務棧裏面去。到這裏簡單的Fragment就已經完成了。
By:Brycen Liu