android:layout_height,android:layout_width是布局大小,影响UI元素实际的大小,如果是match_parent和fill_parent相同,填满父容器;wrap_content,包裹住内容,这种设定才能够使其大小和设定的一样。
R.java可以理解为资源字典, DO NOT MODIFY!
XML中分配id的方式为android:id="@+id/name"
通过调用Activity中的findViewById(R.id.name)方法来在Java控制文件中获取xml定义的组件,Java中使用@id/标示符 来使用。
EditText的getText()方法获取到的是CharSequence类型的变量,要把它转换为String类型才能进行字符串比对,并且使用equals()方法,否则比对的只是引用类型。setText()方法参数是CharSequence类型的变量(其实这个变量是String变量的父类,就暂时把它当做String类型看吧),当参数的类型不是String类型时,利用+""方式将其变为String类型。
OnClickListener可以用来处理多个Button的事件,使用View进行获取然后switch或者if-else if判断即可。
屏幕布局和布局管理器其实就是ViewGroup的对象就是那几大子类的对象。
Activity掌握栈,4大状态,7大方法具体见官方文档图,非常清楚!Activity只能交由系统管理,用户不能不能new,Activity具有独立性,不同的App之间的Activity可以相互调用,Activity栈顶元素是用户当前看到的元素,Task是一个任务,可以包含多个操作。
Activity中 onCreate()方法中进行初始化,例如设置绑定UI组件,设置监听器等等,当一个Activity切换到另一个Activity时这个Activity先Pause,等完全被盖住(另一个Activity执行onCreate(),onStart(),onResume()之后)才会执行onStopped()方法。当一个Activity将要被销毁时,要等到另一个Activity执行完onCreate(),onStart(),onResume(),之后才能被销毁;启动一个新的Activity的方式只有两种,startActivity(Intent对象)和startActivityforResult(。。。)。
Intent组件负责组件之间的通信,构造函数有很多,可以直接设置Component,Action等属性,也可以直接传递数据。
关于传递数据,使用Bundle对象即可,使用putXXX方法用键值对的方式放入数据并且使用Intent.putExtras(Bundle对象)来进行Bundle对象的携带。在目标页面使用Activity的getIntent()方法获取Intent,用Intent的getExtra()方法获取Bundle,利用Bundle的getXXX()方法获取对应的变量。
import导入的类只会导入该类的所有成员和方法,子类和接口是不会被导入的。我们在一个类中调用其他类的方法时,如果不是static方法,需要实例化之后进行调用。
使用Action进行传递的时候,本质就是在一个Activity或者其他的组件中进行声明具备Action的字符串条件(并且给这个字符串命名),然后再其他的代码块中对其(用我们刚刚取得名字,其实你不取名字也是可以的,取个名字更好懂一点)进行调用,还是利用Intent构造函数,然后利用Intent对象的setAction方法进行构造,参数就是名字,也可以直接利用字符串(就是可以不取名字嘛)。自定义action定义为Activity类的private final String成员,变量命名遵循 包名.action.字符串的方式。有相同的Action的时候会跳出对话框让你进行选择。
Category是对Action进行更加细致地描述,附加category跳转Activity时必须保留一个为 <category android:name="android.intent.category.DEFAULT" ></category> 的默认category。
Data表明你要操作的数据,Type表明数据的类型,Data和Type只需要指定其中一个即可,根据Data会自动分析出Type,Data的类型是Uri类型,利用Uri的static方法parse(String uriString)进行解析,一般由协议主机等组成,就是文件的操作路径。
菜单包括OptionsMenu,ContextMenu,PopupMenu,菜单的使用需要在Activity中使用回调方法;对于OptionsMenu来说使用onCreateOptionsMenu(Menu menu),内部使用一个MenuInflate对象的inflate()方式用menu文件夹下的xml文件填充刚才的Menu对象,实现Menu内部的逻辑需要使用onOptionsItemMenuSelected(MenuItem menuitem)方法,内部用简单的switch结构就可以做到。在create方法内部使用addSubMenu()方法添加子菜单,这个方法返回一个SubMenu对象,建立一个SubMenu对象接收吧。
To be continued…