• Android之MainActivity类


    一、MainActivity:

             1、每个种语言都有一个程序入库(如:C#main函数),而Android程序的入口就是Mani Actiivty函数。

             2、Activity是Android的核心类(android.app.Activity),在Activity类有onCreate事件方法,一般用于对Activity进行初始化,并且通过setContentView方法将View放到Activity上,绑定后,Activity会显示View上的控件。

                   MainAcitvity.java文件下的MainActivity类:
                                                   a、 onCreate()是创建窗体的入口函数,
                                                   b、 onCreateOptionsMenu()是创建当前Activity的菜单函数,
                                                   c、 onOptionsItemSelected()是响应菜单按钮点击事件函数。
                                                   d、 PlaceolderFragment内部类是实现自定义fragment


    二、①onCreate函数用来初始化Activity实例对象,在前面Activity博客中我们知道onCreate的方法是在Activity创建时被系统调用,
    是一个Activity生命周期的开始。

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    

    }

          1、Bundle参数类型:以key-value的形式存储数据的。
          2、实际上,saveInsanceState也就是保存Activity的状态的,saveInsanceState中的状态数据是从onsaveInsanceState来的。

    public void onSaveInsanceState(Bundle saveInsanceState){
    super.onSaveInsanceState(saveInsanceState);
    }

        3、当一个Activity结束前,如果需要保存状态,就在onsaveInsanceState中,将状态数据以key-value的形式放入到saveInsanceState中。这样,当一个Activity被创建时,
    就能从onCreate的参数saveInsanceState中获得状态数据, onsaveInsanceState方法
    是用来保存Activity的状态的。
         4、当一个Activity在生命周期结束前,这个方法有一个参数名称与onCreate方法参数名称相同。(,比如:一个游戏在退出前,保存一下当前游戏运行的状态,当下次开启时能接着上次的继续玩下去。),就在onsaveInsanceState中,将状态数据以key-value的形式放入到saveInsanceState中。这样,当一个Activity被创建时,就能从onCreate的参数saveInsanceState中获得状态数据。

         5、重写onSavedInstanceState(),此方法会在activity结束时,调用.
    重写在MainActivity类中右键Source-->override.

        ②onCreateOptionsMenu()菜单函数

    复制代码
    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            /**
             * 此方法用于初始化菜单,其中menu参数就是即将要显示的Menu实例。 返回true则显示该menu,false 则不显示;
             * (只会在第一次初始化菜单时调用) Inflate the menu; this adds items to the action bar
             * if it is present.
             */
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
    @Override
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">boolean</span><span style="color: #000000"> onPrepareOptionsMenu(Menu menu) {
        </span><span style="color: #008000">/**</span><span style="color: #008000">
         * 在onCreateOptionsMenu执行后,菜单被显示前调用;如果菜单已经被创建,则在菜单显示前被调用。 同样的,
         * 返回true则显示该menu,false 则不显示; (可以通过此方法动态的改变菜单的状态,比如加载不同的菜单等) TODO
         * Auto-generated method stub
         </span><span style="color: #008000">*/</span>
        <span style="color: #0000ff">return</span> <span style="color: #0000ff">super</span><span style="color: #000000">.onPrepareOptionsMenu(menu);
    }
    
    @Override
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> onOptionsMenuClosed(Menu menu) {
        </span><span style="color: #008000">/**</span><span style="color: #008000">
         * 每次菜单被关闭时调用. (菜单被关闭有三种情形,menu按钮被再次点击、back按钮被点击或者用户选择了某一个菜单项) TODO
         * Auto-generated method stub
         </span><span style="color: #008000">*/</span>
        <span style="color: #0000ff">super</span><span style="color: #000000">.onOptionsMenuClosed(menu);
    }
    
    @Override
    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">boolean</span><span style="color: #000000"> onOptionsItemSelected(MenuItem item) {
        </span><span style="color: #008000">/**</span><span style="color: #008000">
         * 菜单项被点击时调用,也就是菜单项的监听方法。 
         * 通过这几个方法,可以得知,对于Activity,同一时间只能显示和监听一个Menu 对象。 TODO Auto-generated
         * method stub
         </span><span style="color: #008000">*/</span>
        <span style="color: #0000ff">return</span> <span style="color: #0000ff">super</span><span style="color: #000000">.onOptionsItemSelected(item);
    }</span></pre>
    
    复制代码

        ③onOptionsItemSelected()判断是否存在改菜单,存在返回true,最后调用PlaceolderFragment内部类fragment生命周期的相关的状态方法。

    复制代码
      public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
            if (id == R.id.action_settings) {
                return true;
            }
            return super.onOptionsItemSelected(item);
        }
    复制代码
  • 相关阅读:
    第四十六节:后台托管服务(DI的两种写法)、数据校验规则(内置、 FluentValidation)、程序发布部署
    第四十七节:Asp.Net Core5.x 升级到 Core6.x 版本写法的变化
    函数使用typescript
    Project任务手动导出到Excel(显示三级任务)
    MySQL新增、修改字段并添加默认值和备注
    好消息,Delphi中间件,Delphi二开平台,Delphi低代码开发平台作者促销
    hash和history路由的区别
    vue面试总结2022
    C#.NET 国密SM4加密解密 CBC ECB 2种模式
    未能加载文件或程序集“SissPayWebApi”或它的某一个依赖项。试图加载格式不正确
  • 原文地址:https://www.cnblogs.com/jpfss/p/9849288.html
Copyright © 2020-2023  润新知