国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

FrameLayout和Fragment處理Android應(yīng)用UI布局實(shí)例

2020-04-11 10:44:46
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

將Fragment與Layout結(jié)合使用,一般都是主Activity以frame填充Activity的方式交互管理Fragment :

1.由于用到getSupportFragmentManager()之類,所以主Activity的extends需為FragmentActivity:

  public class MainActivity extends FragmentActivity{    ..........  }

2.主Activity的layout(xml文件)中建立多個(gè)Frame并定義其Android:id="@+id/XXX"
3.主Activity內(nèi)操作函數(shù)中,由查找id來(lái)對(duì)這些FrameLayout進(jìn)行Activity填充:
   添加語(yǔ)句如下

復(fù)制代碼 代碼如下:

   getSupportFragmentManager().beginTransaction().add(R.id.fragment_container2,new NullFrag()).commit();


   取得支持Fragment管理()->開始交易()->添加(frame的id , Fragment).交付(); 
   替換語(yǔ)句如下
   getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container2,new NullFrag()).commit();
   取得支持Fragment管理()->開始交易()->替代(frame的id , Fragment).交付();
例:

復(fù)制代碼 代碼如下:

    public void click_btn_flag02(View view){
         getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container2,new MidFrag()).commit();
    }


注:函數(shù)參數(shù)要用View

下面我們來(lái)看實(shí)例:

2016225112753148.gif (800×600)
效果圖的左邊是一個(gè)列表,右邊是列表item的詳情。
先看一下布局文件(layout):

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:orientation="horizontal" android:layout_width="match_parent"  android:layout_height="match_parent">  <fragment   class="com.fragment.main.TitlesFragment"   android:id="@+id/titles" android:layout_weight="1"   android:layout_width="0px" android:layout_height="match_parent" />  <FrameLayout android:id="@+id/details" android:layout_weight="1"   android:layout_width="0px" android:layout_height="match_parent"   android:background="?android:attr/detailsElementBackground" /> </LinearLayout> 

        布局文件中使用了fragment標(biāo)簽和FrameLayout標(biāo)簽。Android Fragment使用 中介紹了2中嵌入Fragment的方法,這個(gè)實(shí)例中都用到,從布局文件看到有了fragment標(biāo)簽,這是一種使用方法,F(xiàn)rameLayout標(biāo)簽將會(huì)成為第二種加載fragment的載體view。
        看一下程序?qū)崿F(xiàn)(com.fragment.main.TitlesFragment):

public class TitlesFragment extends ListFragment {   int mCurCheckPosition = 0;  int mShownCheckPosition = -1;   @Override  public void onActivityCreated(Bundle savedInstanceState) {   super.onActivityCreated(savedInstanceState);                  setListAdapter(new ArrayAdapter<String>(getActivity(),     android.R.layout.simple_list_item_activated_1,     Shakespeare.TITLES)); //使用靜態(tài)數(shù)組填充列表   if (savedInstanceState != null) {    mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);    mShownCheckPosition = savedInstanceState.getInt("shownChoice", -1);   }    getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);    showDetails(mCurCheckPosition);  }   @Override  public void onSaveInstanceState(Bundle outState) {   super.onSaveInstanceState(outState);    outState.putInt("curChoice", mCurCheckPosition);   outState.putInt("shownChoice", mShownCheckPosition);  }   @Override  public void onListItemClick(ListView l, View v, int position, long id) {   showDetails(position);  }   /**   *顯示listview item 詳情   */  void showDetails(int index) {   mCurCheckPosition = index;    getListView().setItemChecked(index, true);     if (mShownCheckPosition != mCurCheckPosition) {      DetailsFragment df = DetailsFragment.newInstance(index);     FragmentTransaction ft = getFragmentManager()       .beginTransaction();     ft.replace(R.id.details, df);     ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);     ft.commit();     mShownCheckPosition = index;    }   }  } 

TitlesFragment
TitlesFragment繼承自Fragment的子類ListFragment,使用了一個(gè)靜態(tài)數(shù)組填充列表,重寫了onListItemClick方法,showDetails方法展示ListView item的詳情。

DetailsFragment df = DetailsFragment.newInstance(index);//獲取詳情Fragment的實(shí)例FragmentTransaction ft = getFragmentManager().beginTransaction();//獲取FragmentTransaction 實(shí)例ft.replace(R.id.details, df); //使用DetailsFragment 的實(shí)例ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);ft.commit();//提交

看一下DetailsFragment :

public class DetailsFragment extends Fragment {   /**  * Create a new instance of DetailsFragment, initialized to  * show the text at 'index'.  */  public static DetailsFragment newInstance(int index) {   DetailsFragment f = new DetailsFragment();   // Supply index input as an argument.     Bundle args = new Bundle();   args.putInt("index", index);   f.setArguments(args);   return f;  }   @Override  public View onCreateView(LayoutInflater inflater, ViewGroup container,    Bundle savedInstanceState) {   if (container == null) {       return null;   }   ScrollView scroller = new ScrollView(getActivity());   TextView text = new TextView(getActivity());    int padding = (int) TypedValue.applyDimension(     TypedValue.COMPLEX_UNIT_DIP, 4, getActivity().getResources()       .getDisplayMetrics());   text.setPadding(padding, padding, padding, padding);   scroller.addView(text);   text.setText(Shakespeare.DIALOGUE[getArguments().getInt("index", 0)]);   return scroller;  } } 

 
DetailsFragment 中使用newInstance(int index)方法產(chǎn)生DetailsFragment 實(shí)例并接受整型參數(shù),重載了onCreateView方法創(chuàng)建view。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 林州市| 荣昌县| 和龙市| 道孚县| 河池市| 汉阴县| 南溪县| 香河县| 永济市| 锡林浩特市| 呼伦贝尔市| 抚州市| 龙胜| 利辛县| 额济纳旗| 绵竹市| 阿坝县| 类乌齐县| 岳阳县| 皮山县| 漾濞| 鸡泽县| 安泽县| 清远市| 北海市| 勐海县| 繁峙县| 长汀县| 崇左市| 奉化市| 白水县| 车险| 松江区| 洪湖市| 城固县| 三江| 布尔津县| 宜良县| 旌德县| 甘泉县| 杭锦旗|