A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

ObjectGitHub

中级黑马

  • 黑马币:105

  • 帖子:108

  • 精华:0

© ObjectGitHub 中级黑马   /  2016-8-21 21:05  /  4001 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
onCreate是当Activity创建的时候调用,但是当Activity当中有CheckBox等一些控件的时候,点击控件的时候,还会再次调用onCreate方法吗?有哪位大神能帮我解释一下。
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_set4);

        cbProtect = (CheckBox) findViewById(R.id.cb_protect);
        
        boolean protect = sp.getBoolean("safe-protect", false);
        if(protect) {
            cbProtect.setText("防盗保护已开启");
            cbProtect.setChecked(true);
        } else {
            cbProtect.setText("防盗保护未开启");
            cbProtect.setChecked(false);
        }
        
       cbProtect.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked) {
                    cbProtect.setText("防盗保护已开启");
                    sp.edit().putBoolean("safe-protect", true).commit();
                } else {
                    cbProtect.setText("防盗保护未开启");
                    sp.edit().putBoolean("safe-protect", false).commit();
                }
            }
        });
    }

最佳答案

查看完整内容

onCreate()方法只是在窗口创建时调用,点击控件的时候,不会再次调用onCreate()方法,只会调用事件监听器方法(本题中是 new OnCheckedChangeListener())。具体onCreate()方法什么时候会被调用还请楼主多查询Activity的生命周期,里面会有详细介绍。关于控件的事件响应还请楼主多查询android的事件回调机制。不知小弟这么说,会不会帮助到您。 ...

11 个回复

倒序浏览
onCreate()方法只是在窗口创建时调用,点击控件的时候,不会再次调用onCreate()方法,只会调用事件监听器方法(本题中是 new OnCheckedChangeListener())。具体onCreate()方法什么时候会被调用还请楼主多查询Activity的生命周期,里面会有详细介绍。关于控件的事件响应还请楼主多查询android的事件回调机制。不知小弟这么说,会不会帮助到您。
回复 使用道具 举报
自己写个代码试一下不就知道了??
回复 使用道具 举报
不会,啦啦啦
回复 使用道具 举报
LLL_LLL 发表于 2016-8-24 23:42
自己写个代码试一下不就知道了??

兄弟,这就是我写的代码啊
回复 使用道具 举报
不会,你看一下activity的生命周期就知道了,
回复 使用道具 举报
本帖最后由 jing201314z 于 2016-9-3 15:46 编辑

onCreate只是在当第一次调用一个Activity会执行
你写的是用sp保存了状态,就是在创建的时候会读取状态,然后根据状态设置checkBox的文本和选中,然后设置了点击,点击你也处理了文本显示和状态保存,对于你的生命周期问题百度有很多
回复 使用道具 举报
不会,就和栈一样
回复 使用道具 举报
6666666666666666666666
回复 使用道具 举报
小超超 发表于 2016-8-25 11:10
onCreate()方法只是在窗口创建时调用,点击控件的时候,不会再次调用onCreate()方法,只会调用事件监听器 ...

好的,兄弟。我知道了
回复 使用道具 举报
应该不会了,因为这是创建这个activity时加载的,后来并不是实时刷新的,你做做一下动作被相应的动作监听监听到,才会触动监听器。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马