Android中Framgment的构造函数
16lz
2021-01-26
在增加一个空参数的构造函数可以消去第一个错误,但是第二个却不能,第二个错误说要使用默认构造函数外加setArguments(Bundle)来代替,去android的官网上查看Fragment的例子都是下面这个样子的
/***CreateanewinstanceofMyFragmentthatwillbeinitialized*withthegivenarguments.*/staticMyFragmentnewInstance(CharSequencelabel){MyFragmentf=newMyFragment();Bundleb=newBundle();b.putCharSequence("label",label);f.setArguments(b);returnf;}
依葫芦画瓢,去掉带参的构造函数,创建一个newInstance函数,如下
publicclassTestFragmentextendsFragment{privateStringname;privateStringpasswd;publicstaticTestFragmentnewInstance(Stringname,stringpasswd){TestFragmentnewFragment=newTestFragment();Bundlebundle=newBundle();bundle.putString("name",name);bundle.putString("passwd",passwd);newFragment.setArguments(bundle);returnnewFragment;}@OverridepublicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){//TODOAuto-generatedmethodstubViewview=inflater.inflate(R.layout.main,null);returnview;}}
如此这般,第二个错误就消失了,在Fragment所依赖的Activity中,用以下语句创建Fragment实例即可
FragmenttestFragment=TestFragment.newInstance("name","passwd");
对于从Activity传递到Fragment中的参数我们只需要在Fragment的onCreate中获取就可以了
publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);Bundleargs=getArguments();if(args!=null){name=args.getString("name");passwd=args.getstring("passwd");}}
更多相关文章
- Android7.0启动SystemServer进程
- Surface与SurfaceHolder.Callback
- Android(安卓)-- 网络管理分析
- android studio 更新 Gradle错误解决方法 sync gradle failed
- android4.0编译错误集(一)
- [置顶] Android项目的错误异常收集日志记录
- Android(安卓)抽象回调函数以及接口回调更新UI
- Android(安卓)虚拟按键驱动实现
- ObjectHttp使用介绍篇 —— 基础使用