黑马程序员技术交流社区

标题: 关于Activity的onCreate的一些问题 [打印本页]

作者: ObjectGitHub    时间: 2016-8-21 21:05
标题: 关于Activity的onCreate的一些问题
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();
                }
            }
        });
    }

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

兄弟,这就是我写的代码啊
作者: flydream    时间: 2016-9-2 23:14
不会,你看一下activity的生命周期就知道了,
作者: jing201314z    时间: 2016-9-3 15:05
本帖最后由 jing201314z 于 2016-9-3 15:46 编辑

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

好的,兄弟。我知道了
作者: huihui520111    时间: 2016-9-6 00:26
应该不会了,因为这是创建这个activity时加载的,后来并不是实时刷新的,你做做一下动作被相应的动作监听监听到,才会触动监听器。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2