Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> [android] fragment的動態創建,androidfragment

[android] fragment的動態創建,androidfragment

編輯:關於android開發

[android] fragment的動態創建,androidfragment


在一個商業軟件中,會有很多的界面,如果沒一個界面對應一個activity,那麼activity會非常的多,清單文件也會非常的亂,谷歌在android3.0以後引入了新的概念叫fragment

 

fragment無需在清單文件中配置,輕量級的activity,在所屬的activity布局文件中進行配置

在布局文件中使用fragment控件

添加<fragment>節點,設置名稱是fragment指向的類全路徑

其他屬性和別的控件一樣

 

新建一個類Fragment1繼承系統的Fragment類,此時會報錯誤,是因為,我們兼容的android系統最低版本是8,fragment是11版本才引入的,可以先把兼容版本改成11

 

重寫onCreateView()方法,當fragment被創建的時候回調的方法,返回當前的View對象,傳遞進來一個LayoutInflate對象,

調用LayoutInflate對象的inflate()方法,獲得View對象,參數:資源,ViewGroup對象

 

fragment最初設計的時候,是為了適應平板的大屏幕,例如,左側一個listview,右邊一個fragment,點擊ListView的不同的條目,右邊fragment的內容隨之變化,用戶體驗更好

 

動態創建

 

實現,當用戶豎著拿手機顯示一個界面,當橫著拿時顯示另外一個界面

判斷當前手機的朝向,通過屏幕的寬度和高度的對比來實現

調用getWindowManager().getDefaultDisplay().getWidth()獲取寬度

調用getWindowManager().getDefaultDisplay().getHeight()獲取高度

如果高度大於寬度,是豎屏

如果寬度大於高度,是橫屏

新建Fragment1和Fragment2類,繼承系統的Fragment類

獲取Fragment對象,通過new出來

 

獲取FragmentManager對象,通過getFragmentManager()方法

調用FragmentManager對象的beginTransaction()方法,開啟事務,獲得FragmentTransaction對象

調用FragmentTransaction對象的replace()方法,用Fragment替換當前界面,參數:containerViewId,Fragment對象

containerViewId是容器的id,可以使用android.R.id.content代表當前界面的id

調用FragmentTransaction對象的commit()方法,提交事務

 

模擬器ctrl+f11切換橫豎屏

MainActivity.java

package com.tsh.myfragment;

import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Fragment1 f1 = new Fragment1();
        Fragment2 f2 = new Fragment2();
        // 判斷橫豎屏
        int width = getWindowManager().getDefaultDisplay().getWidth();
        int height = getWindowManager().getDefaultDisplay().getHeight();
        FragmentManager fm = getFragmentManager();
        FragmentTransaction fr = fm.beginTransaction();
        if (width < height) {// 豎屏
            fr.replace(android.R.id.content, f1);
        } else {// 橫屏
            fr.replace(android.R.id.content, f2);
        }
        fr.commit();
    }
}

 

Fragment1.java

package com.tsh.myfragment;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment2 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment2, null);
    }
}

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved