android开发笔记:MainActivity.java与activity_main.xml

https://www.jianshu.com/p/f5e56fb2f215

刚开始开发android的时候,新建一个activity总是会新建两个文件,我们已默认命名MainActivity.java与activity_main.xml两个文件来给大家介绍。

activity_main.xml

layout就是布局,所以activity_main.xml其实就是一个布局文件。何为布局文件:我们拖的各种各样的控件在上面,系统就会自动帮我们生成xml代码。那能怎么用,拖在上面又不能点,也只能看?如何建立联系?这时候就是MainActivity.java要干的事情了。

MainActivity.java

在此,我们先了解一下MainActivity.java的代码,复习复习java的基础知识:

package com.example.liwenban.textdemo;

//引用包,这就是引用android SDK的过程,利用开发者写好的方法我们直接引用来提高效率
//(针对文章:android开发笔记:了解android。做的说明,方便看过该文章的朋友理解)
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

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

   }
}

首先我们注意到一个点,MainActivity类名后面跟着一个继承:extends
如果java基础知识不过关的解释一下继承是什么吧:

继承:
继承简而言之就是平常我们所说的继承财产是一个道理,MainActiviy这个类刚刚创建,肯定是什么东西都没有的。正式因为继承,继承了AppCompatActivity类。我们就可以通过“继承”,得到了他的所有:“财产”,也就是他写好的方法。当然这样的说法并不准确,还有private,public各种情况考虑才能判断能否被继承,毕竟不是你想全部继承他的财产他都可以给你。

很形象的比喻,也就明白了下面一个,onCreate怎么来的:他其实就是AppCompatActivity类里面的一个方法。那么这个方法的作用是什么呢?onCreate方法主要是初次启动(指使用这个类)首先加载的方法。看清楚一个关键词:首先。也就是这个方法具有以下特点:就运行一次,而且是最先运行。
做个对比,其实就是写java练习代码里面的main方法,首次加载进入的入口就在这里。其实可以想到,开发这个SDK的人,肯定就是封装了main方法,被他封装了成在android SDK上叫做onCreate。
@Override中文意思就是重写,在java里面我们继承来的,我们要使用就要重写,也就是重写嘛。覆盖掉原来的oncreate方法,我们帮他重写一个oncreate,按照我的想法去执行这个方法。

//意思着我们要先调用一个对象的父对象上的函数,也就是AppCompatActivity
super.onCreate(savedInstanceState);

现在才讲到正轨:

MainActivity.java和activity_main.xml如何建立联系:

setContentView(R.layout.activity_main);

方法名setContentView的意思看的出来,启动内容视图“用”布局文件activity_main.xml。所以,我们可以理解一个原理:
android手机启动一个应用?是先打开布局文件,然后在执行里面的java程序?
答案是:android手机(linux系统)其实都是只会运行java程序,java这段代码告诉我:你要启动一个内容视图为activity_main.xml文件,这时候就会去找activity_main.xml文件,然后转换成各种各样的控件就是android系统干的事,我们不管,这时候程序上就显示activity_main.xml写好的控件了。这时候我们发现,他们其实就是这样建立联系的。。



作者:helloMiao
链接:https://www.jianshu.com/p/f5e56fb2f215
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

你可能感兴趣的:(android开发)