文档章节

Android中Framgment的构造函数

SRain215
 SRain215
发布于 2016/01/11 14:11
字数 327
阅读 78
收藏 5

在增加一个空参数的构造函数可以消去第一个错误,但是第二个却不能,第二个错误说要使用默认构造函数外加setArguments(Bundle)来代替,去android的官网上查看Fragment的例子都是下面这个样子的

    /** 
     * Create a new instance of MyFragment that will be initialized 
     * with the given arguments. 
     */  
    static MyFragment newInstance(CharSequence label) {  
        MyFragment f = new MyFragment();  
        Bundle b = new Bundle();  
        b.putCharSequence("label", label);  
        f.setArguments(b);  
        return f;  
    }

依葫芦画瓢,去掉带参的构造函数,创建一个newInstance函数,如下

public class TestFragment extends Fragment   
{  
    private String name;  
    private String passwd;  
  
    public static TestFragment newInstance(String name, string passwd) {  
        TestFragment newFragment = new TestFragment();  
        Bundle bundle = new Bundle();  
        bundle.putString("name", name);  
        bundle.putString("passwd", passwd);  
        newFragment.setArguments(bundle);  
        return newFragment;  
  
    }  
    @Override  
    public View onCreateView(LayoutInflater inflater, ViewGroup container,  
            Bundle savedInstanceState) {  
        // TODO Auto-generated method stub  
        View view = inflater.inflate(R.layout.main, null);  
          
        return view;  
    }  
  
}

如此这般,第二个错误就消失了,在Fragment所依赖的Activity中,用以下语句创建Fragment实例即可

Fragment testFragment=TestFragment.newInstance("name","passwd");

对于从Activity传递到Fragment中的参数我们只需要在Fragment的onCreate中获取就可以了

public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
  
        Bundle args = getArguments();  
        if (args != null) {  
            name = args.getString("name");  
        passwd = args.getstring("passwd");  
        }  
}


© 著作权归作者所有

SRain215
粉丝 18
博文 144
码字总数 89414
作品 0
扬州
Android工程师
私信 提问
Android4.0-Fragment框架实现方式剖析(一)

经过反复的学习对比,个人觉得带着问题学习新知是最有效的学习方式,因此文本就以提问的方式来讲述Fragment框架实现方式。 1、什么是Fragment? Fragment包含在Activity中,Fragment只能存在...

程序袁_绪龙
2015/07/07
0
0
Android JNI开发系列(十一) JNI 访问父类的构造方法和父类实例方法

JNI 访问父类的构造方法和父类实例方法 构造方法和父类实例方法 先看一段Java代码, 简单看下上面代码,很简单的两个类,父类 ,子类 , 类中定义了 和 两个方法, 继承自 ,并重写了父类的两个...

蔡小鹏
2018/10/17
0
0
运行错误:Unable to instantiate activity ComponentInfo

不能实例化activity有如下三种情况: 1.没有在Manifest.xml 清单中注册该activity,或者在创建完activity后,修改了包名或者activity的类名,而配置清单中没有修改,造成不能实例化。 2.自己...

风木子
2015/06/04
0
0
安卓入门笔记之Activity信使—intent

本文来自 Legend 的博客园博客,作者给了不错的小结,下回分解~ Android Intent详解 一、 Intent 作用 Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助...

twobeings
2014/04/05
0
0
android intent隐式调用之一个应用程序启动另一个应用程序

理解Intent的关键之一是理解清楚Intent的两种基本用法:一种是显式的Intent,即在构造Intent对象时就指定接收者,这种方式与普通的函数调用类似;另一种是隐式的Intent,即Intent的发送者在构...

惊天
2011/06/30
0
7

没有更多内容

加载失败,请刷新页面

加载更多

Spring系列教程八: Spring实现事务的两种方式

一、 Spring事务概念: 事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。...

我叫小糖主
今天
5
0
CentOS 的基本使用

1. 使用 sudo 命令, 可以以 root 身份执行命令, 必须要在 /etc/sudoers 中定义普通用户 2. 设置 阿里云 yum 镜像, 参考 https://opsx.alibaba.com/mirror # 备份mv /etc/yum.repos.d/CentO...

北漂的我
昨天
3
0
Proxmox VE技巧 移除PVE “没有有效订阅” 的弹窗提示

登陆的时候提示没有有效的订阅You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options. 用的是免费版的,所以每次都提示......

以谁为师
昨天
3
0
Java设计模式之外观模式(门面模式)

什么是外观模式   外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口...

须臾之余
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部