当前位置: 首页>移动开发>正文

android studio implementation引入fastjson android studio fragment怎么用

最近在重构dileber android框架,为了更好的适应新时代的手机,新出的框架,最低支持android 4.0版本。框架也采用gradle。基本的方法都和之前的框架有了很大不同。增加了很多实用的工具类。

今天不对框架的功能做讲解(后续完成框架再进行讲解)。主要是对fragment的正确使用来讲解:

新框架地址ndileber框架

今天主要使用到的是框架中的一个工具类,底部菜单导航栏。

效果特写:

android studio implementation引入fastjson android studio fragment怎么用,android studio implementation引入fastjson android studio fragment怎么用_android fragment的使用,第1张

菜单的源码在这里菜单源码

下面我就开始在activity中使用这个菜单了。

首先activity 继承baseActivity

之后我便在oncreate 方法中写代码了。

如下

private List list = new ArrayList<>();

BottomBar mBar;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_home);

mBar= getView(R.id.bar);

//由于我采用字体图标库,实际上R.string.home2就是上图中的小房子图标,字体图标库,参照这篇文章[字体图标讲解](http://www.imooc.com/article/4729 "字体图标讲解") 新框架与旧框架用法相同

mBar.addItem(new BottomBarTab(this,R.string.home2,BottomBarTab.TYPE_FONT)).

addItem(new BottomBarTab(this,R.string.bubbles,BottomBarTab.TYPE_FONT)).

addItem(new BottomBarTab(this,R.string.newspaper,BottomBarTab.TYPE_FONT)).

addItem(new BottomBarTab(this,R.string.cogs,BottomBarTab.TYPE_FONT));

mBar.setOnClickItemMenu(new BottomBar.OnClickItemMenu() {

@Override

public void onClickItem(int nowPosition,int position) {

switchContent(list.get(nowPosition),list.get(position));

}

});

addMenu(savedInstanceState);

}

addmenu是方法的关键,上面只是阐述菜单的生成,不多做讲解:

private void addMenu(Bundle savedInstanceState){

HomeItemFragment homeItemFragment = ActivityUtils.getFragment(getSupportFragmentManager(),R.id.homeFrame,HomeItemFragment.newInstance(3));

MessageFragment messageFragment = ActivityUtils.getFragment(getSupportFragmentManager(),R.id.messageFrame,MessageFragment.newInstance("1","2"));

ConsultFragment consultFragment = ActivityUtils.getFragment(getSupportFragmentManager(),R.id.consultFrame,ConsultFragment.newInstance("2","3"));

SettingFragment settingFragment = ActivityUtils.getFragment(getSupportFragmentManager(),R.id.settingFrame,SettingFragment.newInstance("4","5"));

list.add(homeItemFragment);

list.add(messageFragment);

list.add(consultFragment);

list.add(settingFragment);

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

transaction.hide(messageFragment).hide(consultFragment).hide(settingFragment).commit();

if(savedInstanceState!=null){

mBar.setCurrentItem(savedInstanceState.getInt(SELECT));

}

}

addMenu中用到了activityutil类,这个是获取fragment的关键方法:

activityUtils

方法解释如下:

//首先对fragment进行判空,就不解释了,之后先对fragment判断是否存在,如果存在的话就进行复用,(你可能有如下问题:为什么呢?明明写到oncreate中,为什么还要判断呢?)。比如说当前页面进行屏幕横竖操作,这时候就发生了一点问题,fragment重叠了(oncreate执行了,原来拥有的fragment依然存在),所以会出现重叠现象。我在看别人博客的时候发现有很多的博客写的有问题,有些博客甚至去修改onSaveInstanceState和onRestoreInstanceState方法,写法并不是很完美。我如下的写法,一方面是可以解决重叠问题,另一方面构建出的工具类可以直接在代码中使用~

public static T getFragment(@NonNull FragmentManager fragmentManager,@NonNull int fragmentId,@NonNull T myFragment){

Check.checkNotNull(fragmentManager);

Check.checkNotNull(fragmentId);

Check.checkNotNull(myFragment);

T fragment = (T)fragmentManager.findFragmentById(fragmentId);

if (fragment == null) {

fragment = myFragment;

addFragmentToActivity(fragmentManager, fragment,fragmentId);

}

return fragment;

}

切换菜单的方法

public void switchContent(Fragment from, Fragment to) {

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

transaction.hide(from).show(to).commit(); // 隐藏当前的fragment,显示下一个

}

上面是一个menu的创建与使用方法,目前我在开发一个项目,去整合框架中的使用例子。后期会把源码放在我的github上项目例子


https://www.xamrdz.com/mobile/43j1924946.html

相关文章: