Android Fragment 和 Activity

LashawndaDe 8年前發布 | 12K 次閱讀 Android開發 移動開發

來自: http://blog.csdn.net//never_cxb/article/details/48136265


Android Fragment 和 Activity

為什么要使用Fragment

誤解:
網上搜了很多資料,都是fragment是為了手機和平板的適配用的, 這當然是fragment應用的一方面, 更多的應用是為了托管fragment

</blockquote>


在 Activity 托管一個 UI Fragment, 如兩種方法
1 添加fragment到activity布局中, 在activity的onCreate()方法里引入布局

 @Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

}</pre>

2 在activity代碼中添加 fragment , 用activity托管fragment

public abstract class SingleFragmentActivity extends FragmentActivity {
protected abstract Fragment createFragment();

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fragment); FragmentManager fm = getSupportFragmentManager(); Fragment fragment = fm.findFragmentById(R.id.fragmentContainer); if (fragment == null) { fragment = createFragment(); fm.beginTransaction() .add(R.id.fragmentContainer, fragment) .commit(); } }</pre>

}


第一張方法不靈活, 會把fragment視圖和activity視圖綁定在一起

第二種方法可以在運行時候控制fragment的方法, 我們可以決定何時將fragment添加到activity中以及隨后完成具體任務; 也可以移除fragment, 用其他fragment代替當前fragment

onCreate() 方法 比較

import android.support.v4.app.Fragment;
public class SMSBombFragment extends Fragment {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);

}

}</pre>


Fragment.onCreat(Bundle) 是public 方法, 因為需要被托管fragment的任何activity調用

Activity.onCreate(Bundle)是protect方法

生成fragment視圖

在Fragment.onCreate(Bundle)中, 并沒有生成fragment的視圖, 雖然onCreate(Bundle)方法配置了fragment變量, 但創建和配置fragment視圖是通過下面的onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)完成的.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_bomb, container, false);

initView(v);
setButtonListener();

return v;

}</pre>


onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 生成的View返回給托管的Activity

</blockquote> </div>

 本文由用戶 LashawndaDe 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!