開發一個好專案:二、actvity簡便跳轉,建立選單按鈕,正確使用fr
這篇文章是上一篇的繼續,你可以先看這篇: 框架地址 希望大家能多多star一下
首先我把我寫的這個首頁拿出來,這個首頁主要是有4個按鈕。
跳轉activity方法,將跳轉作為一個靜態函式,來處理,跳轉簡單,日後可以在這裡直接新增跳轉所需要的引數,減少程式碼改動量。方便美觀。推薦使用~
public static void start(Context context){
Intent intent = new Intent();
intent.setClass(context,HomeActivity.class);
context.startActivity(intent);
}
layout xml直接寫在一個方法裡,其實也沒啥太大用處
protected int layoutViewId() {
return R.layout.activity_home;
}
配置titlebar,我把titlebar做成一個類,裡面直接就能呼叫titlebar,還可以直接設定點選事件。
UToolBar uToolBar = new UToolBar();
uToolBar.setTitleId(R.string.takkyuu_home);
uToolBar.setNeedNavigate(false);
setToolBar(R.id.toolbar,uToolBar);
注意配置titlebar時候 xml裡必須有 titlebar的配置
底部選單使用方式,裡面採用的是字型圖表的配置,如果大家不知道的話,請看我的上一篇文章。
mBar= getView(R.id.bar);
//設定字型為 R.string.home3 字型的型別為 BottomBarTab.TYPE_FONT
mBar.addItem(new BottomBarTab(this,R.string.home3,BottomBarTab.TYPE_FONT)).
addItem(new BottomBarTab(this,R.string.tree,BottomBarTab.TYPE_FONT)).
addItem(new BottomBarTab(this,R.string.m_search,BottomBarTab.TYPE_FONT)).
addItem(new BottomBarTab(this,R.string.user,BottomBarTab.TYPE_FONT));
mBar.setOnClickItemMenu(new BottomBar.OnClickItemMenu() {
@Override
public void onClickItem(int nowPosition,int position) {
}
});
如何正確的載入fragment,我封裝好了一個ActivityUtils方法,裡面還有其他方法,大家可以看看,對fragment先進行查詢,如果沒有的話,再進行新增,提高的效能效率
HomeFragment homeFragment = ActivityUtils.getFragment(getSupportFragmentManager(),R.id.homeFrame,HomeFragment.newInstance());
如下貼出整個程式碼。
xml
activity~這個activity是繼承了我上一個文章裡寫的TBaseActivity
public class HomeActivity extends TBaseActivity implements TakkyuuBaseFragment.OnFragmentInteractionListener{
public static void start(Context context){
Intent intent = new Intent();
intent.setClass(context,HomeActivity.class);
context.startActivity(intent);
}
@Override
protected void startView(Bundle savedInstanceState) {
}
@Override
protected int layoutViewId() {
return R.layout.activity_home;
}
private final static String SELECT = "select";
BottomBar mBar;
Fragment temp;
@Override
protected void initView(final Bundle savedInstanceState) {
UToolBar uToolBar = new UToolBar();
uToolBar.setTitleId(R.string.takkyuu_home);
uToolBar.setNeedNavigate(false);
setToolBar(R.id.toolbar,uToolBar);
mBar= getView(R.id.bar);
mBar.addItem(new BottomBarTab(this,R.string.home3,BottomBarTab.TYPE_FONT)).
addItem(new BottomBarTab(this,R.string.tree,BottomBarTab.TYPE_FONT)).
addItem(new BottomBarTab(this,R.string.m_search,BottomBarTab.TYPE_FONT)).
addItem(new BottomBarTab(this,R.string.user,BottomBarTab.TYPE_FONT));
mBar.setOnClickItemMenu(new BottomBar.OnClickItemMenu() {
@Override
public void onClickItem(int nowPosition,int position) {
}
});
HomeFragment homeFragment = ActivityUtils.getFragment(getSupportFragmentManager(),R.id.homeFrame,HomeFragment.newInstance());
ConsFragment consFragment = ActivityUtils.getFragment(getSupportFragmentManager(),R.id.consFrame,ConsFragment.newInstance("3","2"));
SearchFragment searchFragment = ActivityUtils.getFragment(getSupportFragmentManager(),R.id.searchFrame,SearchFragment.newInstance());
PeopleFragment peopleFragment = ActivityUtils.getFragment(getSupportFragmentManager(),R.id.peopleFrame,PeopleFragment.newInstance());
//這是後續的MVP模式開發,後續我會繼續講解。
new HomePresenter(homeFragment,SysRepository.getInstance());
new PeoplePresenter(peopleFragment,SysRepository.getInstance());
new SearchPresenter(searchFragment,SysRepository.getInstance());
//螢幕翻轉,記錄狀態
if(savedInstanceState!=null){
mBar.setCurrentItem(savedInstanceState.getInt(SELECT));
}
}
//螢幕翻轉,記錄狀態
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putInt(SELECT,mBar.getmCurrentPosition());
super.onSaveInstanceState(outState);
}
//fragment與activity互動 後續會講解
@Override
public SFont onRightButtonFont(Integer res) {
String text = "";
if(res!=null){
text = getResources().getString(res);
}
SFont sFont = getView(R.id.toolbar_bar_right);
sFont.setText(text);
return sFont;
}
//fragment與activity互動 後續會講解
@Override
public void onTitleName(String title) {
setTitle(title);
}
//重寫退出按鈕處理函式。
@Override
public void onBackPressed() {
dialogOk("確定要退出麼", new DialogLinstener() {
@Override
public void confirm(Dialog dialog) {
dialog.dismiss();
HomeActivity.super.onBackPressed();
}
@Override
public void cancel(Dialog dialog) {
dialog.dismiss();
}
});
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3549/viewspace-2798146/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android 點選按鈕跳轉Android
- 開發一個好專案:八、建立viewView
- radio 單選按鈕 選中多個
- 單選多選按鈕
- [開發教程] 第17講:Bootstrap單選按鈕boot
- 配置選單按鈕掃一掃
- 點選一個按鈕使其樣式發生變化,再點選另一個按鈕發生同樣變化,但上一個按鈕樣式復原
- JQuery統一複寫美化專案中所有radio單選按鈕樣式jQuery
- Goland 開啟一個專案的正確姿勢GoLand
- 正確姿勢使用vue cli3建立專案Vue
- 前端設計,確定按鈕正慢慢消失前端
- 一個簡單的Vue按鈕級許可權方案Vue
- HTML input radio單選按鈕HTML
- HTML input radio 單選按鈕HTML
- [開發教程]第23講:Bootstrap帶下拉選單的按鈕boot
- 如何使用 Bootstrap class 向按鈕新增下拉選單boot
- NX二次開發:一個DLL設定多個按鈕操作的方法
- log1按鈕介質頁面跳轉
- 面向Vue新人:寫一個簡單的倒數計時按鈕Vue
- Tkinter (11) 選單按鈕部件 Menubutton
- Tkinter (15) 單選按鈕部件 Radiobutton
- 快速開始構建一個簡單專案
- 基於元件化開發,一個簡單的Android專案框架元件化Android框架
- 單選按鈕和核取方塊
- CSS3 美化radio單選按鈕CSSS3
- Chrome 22亮相 全新選單按鈕曝光Chrome
- 設定radio單選按鈕預設選中
- JavaScript獲取選中radio單選按鈕值JavaScript
- 胖哥學SpringMVC:簡單跳轉專題SpringMVC
- 建立一個簡單的初級SpringMVC專案(非註解版)SpringMVC
- 核取方塊有四個按鈕,選擇兩個按鈕,table 就會出現相應資料,驗證資料是否正確,應該怎麼做?
- 舉兩個栗子:如何正確建立個人的機器學習專案集機器學習
- js點選按鈕劃出選單容器第一版JS
- Android開發 如何使用選擇器(selector) 來實現點選按鈕變色Android
- Flutter隨筆(二)——使用Flutter Web + Docker + Nginx打造一個簡單的Web專案FlutterWebDockerNginx
- 直播系統開發,Flutter建立圓圈圖示按鈕Flutter
- Tkinter (30) 選單按鈕部件 ttk.Menubutton
- Tkinter (34) 單選按鈕部件 ttk.Radiobutton