在增加一个空参数的构造函数可以消去第一个错误,但是第二个却不能,第二个错误说要使用默认构造函数外加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");}}


更多相关文章

  1. Android7.0启动SystemServer进程
  2. Surface与SurfaceHolder.Callback
  3. Android(安卓)-- 网络管理分析
  4. android studio 更新 Gradle错误解决方法 sync gradle failed
  5. android4.0编译错误集(一)
  6. [置顶] Android项目的错误异常收集日志记录
  7. Android(安卓)抽象回调函数以及接口回调更新UI
  8. Android(安卓)虚拟按键驱动实现
  9. ObjectHttp使用介绍篇 —— 基础使用

随机推荐

  1. 10个经典的Android开源应用项目
  2. Android(安卓)内核 - 00 Android模块及Li
  3. Android开发者必知的5个开源库
  4. Android中我为什么发不了邮件--Android邮
  5. Android差量更新
  6. Android应用程序线程消息循环模型分析
  7. 阿里云手机应用开发点滴
  8. Android平台调用Web Service:示例
  9. Android(安卓)NDK之接口统一
  10. Android线程模型解析(包括UI的更新)