Android Fragment使用之實例演示
Fragment是Android honeycomb 3.0新增的概念,在如何使用Android Fragment中做了關(guān)于Fragment的詳細介紹。本文則主要是通過實例的方式讓大家更直觀的了解Fragment的使用方法。
首先貼上實例的運行效果截圖:
效果圖的左邊是一個列表,右邊是列表item的詳情。
先看一下布局文件(layout):
XML/HTML代碼
<?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標簽和FrameLayout標簽。如何使用Android Fragment中介紹了兩中嵌入Fragment的方法,這個實例中都用到,從布局文件看到有了fragment標簽,這是一種使用方法,F(xiàn)rameLayout標簽將會成為第二種加載fragment的載體view。
看一下程序?qū)崿F(xiàn)(com.fragment.main.TitlesFragment):
Java代碼
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繼承自Fragment的子類ListFragment,使用了一個靜態(tài)數(shù)組填充列表,重寫了onListItemClick方法,showDetails方法展示ListView item的詳情。
Java代碼
DetailsFragment df = DetailsFragment.newInstance(index);//獲取詳情Fragment的實例 FragmentTransaction ft = getFragmentManager().beginTransaction();//獲取FragmentTransaction 實例 ft.replace(R.id.details, df); //使用DetailsFragment 的實例 ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); ft.commit();//提交
這里就使用到了Android Fragment使用中介紹的第二種加載fragment的方法??匆幌翫etailsFragment :
Java代碼
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ù),重載了onCreateView方法創(chuàng)建view。
這個例子基本完成了,主要介紹的是在3.0以后的使用方法,其實Fragment在SDK1.6之后就可以使用了,在1.6上使用需要借助 android-support-v4.jar包實現(xiàn)。android-support-v4.jar在:SDK根目錄\extras\android \compatibility\v4下可以找到。
以上就是對Android Fragment的資料整理,后續(xù)繼續(xù)添加相關(guān)資料,謝謝大家對本站的支持!
- Android Fragment的生命周期詳解
- Android Fragment概述及用法
- Android開發(fā) Activity和Fragment詳解
- Android Fragment多層嵌套重影問題的解決方法
- Android 中 Fragment 嵌套 Fragment使用存在的bug附完美解決方案
- Fragment 多層嵌套方法調(diào)用問題的解決方案
- Android中關(guān)于FragmentA嵌套FragmentB的問題
- jQuery3.0中的buildFragment私有函數(shù)詳解
- Android 動態(tài)添加Fragment的實例代碼
- Android利用Fragment實現(xiàn)Tab選項卡效果
- Android Fragment+FragmentTabHost組件實現(xiàn)常見主頁面(仿微信新浪)
相關(guān)文章
Android實現(xiàn)偵聽電池狀態(tài)顯示、電量及充電動態(tài)顯示的方法
這篇文章主要介紹了Android實現(xiàn)偵聽電池狀態(tài)顯示、電量及充電動態(tài)顯示的方法,非常實用的功能,需要的朋友可以參考下2014-09-09Android Compose學(xué)習(xí)之繪制速度表盤
這篇文章主要為大家詳細介紹了Android Compose繪制速度表盤的相關(guān)知識,文中的示例代碼講解詳細,具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解下2023-11-11淺談關(guān)于Android WebView上傳文件的解決方案
這篇文章主要介紹了淺談關(guān)于Android WebView上傳文件的解決方案 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09Ubuntu中為Android HAL編寫JNI方法提供JAVA訪問硬件服務(wù)接口
本文主要介紹Ubuntu中為Android硬件抽象層模塊編寫JNI方法提供Java訪問硬件服務(wù)接口,這里給大家詳細說明如何編寫 JNI方法訪問硬件接口并附示例代碼,有需要的小伙伴參考下2016-08-08漂亮的Android音樂歌詞控件 仿網(wǎng)易云音樂滑動效果
這篇文章主要為大家詳細介紹了漂亮的Android音樂歌詞控件,仿網(wǎng)易云音樂滑動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01詳解Android app自動更新總結(jié)(已適配9.0)
這篇文章主要介紹了詳解Android app自動更新總結(jié)(已適配9.0),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04