這個主要是如何替換fragment的demo。效果圖如下(下面的tabhost和上面的bar不屬于這次的內容,這個是我做的一個應用程序框架的一部分,有需要的或者想研究研究的可以私下聯系),主要是講解中間的內容怎么實現,即點擊上面的RadioGroup,下面的內容一起改變(改變的是XML中的布局,這樣的話下面三個的布局完全可以自己定義)
1.首先在主界面的xml中添加一個RadioGroup,里面添加三個RadioButton即可
<RadioGroup android: style="@style/layout_full" android:layout_margin="5dp" android:background="@drawable/rounded_edittext" android:orientation="horizontal" android:padding="5dp" > <RadioButton android: style="@style/layout_horizontal" android:layout_gravity="center_horizontal" android:layout_weight="1" android:checked="true" android:text="均分" /> <RadioButton android: style="@style/layout_horizontal" android:layout_gravity="center_horizontal" android:layout_weight="1" android:text="個人" /> <RadioButton android: style="@style/layout_horizontal" android:layout_gravity="center" android:layout_weight="1" android:text="借貸" /> </RadioGroup>
其中
android:background="@drawable/rounded_edittext"
這一句是給這個RadioGroup添加一個帶圓角的邊框?
rounded_edittext.xml的代碼如下
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:andro android:shape="rectangle" > <solid android:color="#ffffff" /> <corners android:radius="7dip" /> <stroke android:width="2px" android:color="#000000" /> </shape>
放置在drawable文件夾下即可
2.下面的內容由三個xml定義好的布局來呈現,這三個xml的布局可以自己來寫 ,我就很簡單地建了三個,做例子用
speeddial_fragment_pay1.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:andro android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="5dp" android:background="@drawable/rounded_edittext" android:orientation="vertical" > <Button android: android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="Button" /> </RelativeLayout>
3.(重要)在主布局文件中添加Fragment的載體,比如一個framlayout,負責承載fragment
在上面的RadioGroup的布局下增加:
<FrameLayout android: android:layout_width="match_parent" android:layout_height="match_parent" />
這樣布局就完成了
4.由于Fragment的特性,我們要新建三個自己的Fragment,都繼承自Fragment?
SpeeddialFragmentOne.java
package?com.gracker.fragment;?? import?android.app.Fragment;??import?android.os.Bundle;??import?android.view.LayoutInflater;??import?android.view.View;??import?android.view.ViewGroup;?? import?com.gracker.tabactivity.R;?? public class?SpeeddialFragmentOne?extends?Fragment?{?? @Override public void?onCreate(Bundle?savedInstanceState)?{?? //?TODO?Auto-generated?method?stub super.onCreate(savedInstanceState);??????}?? @Override public?View?onCreateView(LayoutInflater?inflater,?ViewGroup?container,??????????????Bundle?savedInstanceState)?{?? //?TODO?Auto-generated?method?stub return?inflater.inflate(R.layout.speeddial_fragment_pay1,?container,?false);??????}??}??
這個Fragment非常簡單,沒有添加任何的邏輯,僅僅只是在onCreateView的要布局然后以View返回。Fragment有很多方法,可以根據自己的需要進行重載,這里就不多說了,自己到用的時候自然就知道了。
類似地,建立另外兩個Fragment ,改變的僅僅是
return?inflater.inflate(R.layout.speeddial_fragment_pay1,?container,?false);??
5.在主Activity中調用:
MainActivity.java
/** ?*?主Activity ?*? ?*?@author?Gracker?Gao ?*?@date?2012.8.15 ?*/ package?com.gracker.hostactivity;?? import?android.app.Activity;??import?android.app.FragmentTransaction;??import?android.os.Bundle;??import?android.util.Log;??import?android.widget.RadioGroup;??import?android.widget.RadioGroup.OnCheckedChangeListener;?? import?com.gracker.fragment.SpeeddialFragmentOne;??import?com.gracker.fragment.SpeeddialFragmentThree;??import?com.gracker.fragment.SpeeddialFragmentTwo;??import?com.gracker.tabactivity.R;?? public class?MainActivity?extends?Activity?{?? private final?String?TAG?=?"SpeedDialActivity";?? private?RadioGroup?mRadioGroup;?? private?SpeeddialFragmentTwo?mSpeeddialFragmentTwo;?? private?SpeeddialFragmentOne?mSpeeddialFragmentOne;?? private?SpeeddialFragmentThree?mSpeeddialFragmentThree;?? private?FragmentTransaction?transaction;?? public void?onCreate(Bundle?savedInstanceState)?{?? super.onCreate(savedInstanceState);??????????setContentView(R.layout.speeddial);?? ????????init_date();??????????setupWidgets();??????}?? private void?init_date(){??????????transaction?=?getFragmentManager()??????????????????.beginTransaction();?? if?(null?==?mSpeeddialFragmentOne)?{??????????????mSpeeddialFragmentOne?=?new?SpeeddialFragmentOne();??????????}??????????transaction.add(R.id.fragment_container,??????????????????mSpeeddialFragmentOne);?? //?Commit?the?transaction ????????transaction.commit();??????}?? private void?setupWidgets()?{?? ????????mRadioGroup?=?(RadioGroup)?findViewById(R.id.radioGroup1);??????????mRadioGroup.setOnCheckedChangeListener(new?OnCheckedChangeListener()?{?? @Override public void?onCheckedChanged(RadioGroup?group,?int?checkedId)?{?? //?TODO?Auto-generated?method?stub switch?(checkedId)?{?? case?R.id.radio0:??????????????????????Log.v(TAG,?"setupWidgets():radio0?clicked");?? if?(null?==?mSpeeddialFragmentOne)?{??????????????????????????mSpeeddialFragmentOne?=?new?SpeeddialFragmentOne();??????????????????????}??????????????????????transaction?=?getFragmentManager()??????????????????????????????.beginTransaction();??????????????????????transaction.replace(R.id.fragment_container,??????????????????????????????mSpeeddialFragmentOne);??????????????? //?Commit?the?transaction ????????????????????transaction.commit();?? break;?? case?R.id.radio1:??????????????????????Log.v(TAG,?"setupWidgets():radio1?clicked");?? if?(null?==?mSpeeddialFragmentTwo)?{??????????????????????????mSpeeddialFragmentTwo?=?new?SpeeddialFragmentTwo();??????????????????????}??????????????????????transaction?=?getFragmentManager()??????????????????????????????.beginTransaction();??????????????????????transaction.replace(R.id.fragment_container,??????????????????????????????mSpeeddialFragmentTwo);??????????????????? //?Commit?the?transaction ????????????????????transaction.commit();?? break;?? case?R.id.radio2:??????????????????????Log.v(TAG,?"setupWidgets():radio2?clicked");?? if?(null?==?mSpeeddialFragmentThree)?{??????????????????????????mSpeeddialFragmentThree?=?new?SpeeddialFragmentThree();??????????????????????}??????????????????????transaction?=?getFragmentManager()??????????????????????????????.beginTransaction();??????????????????????transaction.replace(R.id.fragment_container,??????????????????????????????mSpeeddialFragmentThree);????????????????????? //?Commit?the?transaction ????????????????????transaction.commit();?? break;?? default:?? break;??????????????????}??????????????}??????????});??????}?? @Override protected void?onResume()?{?? //?TODO?Auto-generated?method?stub super.onResume();?? ????}?? @Override protected void?onDestroy()?{?? //?TODO?Auto-generated?method?stub super.onDestroy();?? //?dataEncapsulation.closeDataBase_speedDial(); ????}?? }??
init_data()函數中主要是初始化值,包括初始化用戶第一個看到的Fragment
在RadioGroup的onCheckedChangeLinsteer中,切換Fragment。關于Fragment的一些操作,比如增加,刪除,替換等等,可以參照這個帖子:http://www.eoeandroid.com/thread-71642-1-1.html?講的很詳細,我也不想重復。
這個Demo就不提供下載了,畢竟不是很難,所有的東西都交代了,自己敲一遍收獲總是比打開別人的代碼來研究要好的多。
例子中有什么錯誤的地方歡迎指正。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
如何切換qq聊天背景?點開我的炫酷潮流,后再點主體背景,是可以對自己插入圖片以及背景設置手機qq聯系人背景怎么改?系統設置詳細步驟萬分感謝1.將屏幕向右滑動,直接進入個人中心后點擊個性造型。2.直接進入個性裝扮中點擊聊天說話背景色調。3.在去聊天背景設置中與設置中單個的聊天說話背景主界面一樣,此處不再贅述,但類似之處是這處所更改的系統設置是對所有去聊天提示框都管用的。諾基亞手機里怎么設置里一起聊天...
怎樣在《紅警》里聯機?1. 首先,我們打開紅色警報2游戲,界面如下2。然后選擇選項,出現如下界面3。然后點擊網絡進入設置頁面4。設置目標網絡,兩臺聯機計算機設置為00.00.00。5. 點擊確定進入主界面,點擊網絡,即可加入局域網游戲。1. 鼠標右鍵是一個快速移動的界面。2. 設置team Ctrl 0-9,從當前選定的單元創建一個0-9的團隊。3. 選擇團隊0-9選擇您設置的團隊。4. 添加選擇...
csgoiem全球總決賽賽制?還有期末考試。IEM8卡托維茲世界總決賽是繼S3世界總決賽之后第一個真正意義上的LOL國際賽事。IEM8卡托維茲世界總決賽是繼S3世界總決賽之后第一個真正意義上的LOL國際賽事。八支隊伍分成兩組,老對手之間的競爭再次被點燃,新對手也可能出現。雙循環賽制保證了觀眾可以看到各隊之間多樣化的比賽,也給了各隊真正展示實力,爭奪冠軍的機會。we戰隊榮譽都有哪些?2011年WCG...