随笔

AndroidManifest.xml

  • Activity 主窗口, 对应一个 Activity子类 ,  通过name 属性和子类挂钩, 如".HelloWorld". Activity 经常被用来当全屏窗口使用, 但是也可以作为浮动窗口或嵌套到其他的 Activity 中.

public class HelloWorld extends Activity { @Override //默认必须覆盖的方法 public void onCreate(Bundle savedInstanceState) { /*Bundle,一个类似于Map的类, 可以保存自己的状态, Activity 之间的参数传递, 也是通过一个Bundle 对象来实现的*/ super.onCreate(savedInstanceState); /*载入 layout文件夹下的 main.xml 文件, 该文件里面配置的元素在加载完毕后, 可通过 findViewById 获取元素 */ setContentView(R.layout.main); } }

 

public class Activity extends ApplicationContext{ protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onRestart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); }

 

随笔_第1张图片

 

 

Activity的生命周期图(好久没画图了, visio2007挺好用的)

 

  • onCreate() 里设置所有的 "全局" 状态.
  • onDestroy() 里释放所有的资源.
  • onPause()) 在停止与用户交互前, 保存更改过的数据.
  • 当覆盖这些方法的时候, 务必记得先调用超类的方法. 如, super.onCreate(savedInstanceState)
  • 手动调用 Activity对象的 finish() 方法, 代表这个Activity已运作完毕,当系统接收到这个命令时,即会关闭此Activity. 此时点击模拟器的返回(Back)键,并不会回到上一个Activity的画面.

 

 

      web 开发的时候, 有这样一种场景, 你必须选择一个人来进行操作, 操作的人很多, 我们把这些人放到一个弹出窗口中, 然后进行选择, 选择完毕以后, 我们关闭窗口, 返回结果, 把结果填充到原来的界面上.

      上述的类似操作, 很多人在项目中应该都碰到过, 为此, 我曾经对公司的架构师提出增加此场景的处理方案, 可惜, 人家不理会我. 而Android 的设计者是很人性化的, 他们理解这样的场景需求, 并为我们提供了方便的处理方案!!!! 那就是

       startActivityForResult(Intent intent, int requestCode);

       该方法第一个参数不用多说了, 第二个参数是一个整形, 自己定义, 是对该次请求的一个标识, 目标Activity 又不是只有你一个可以请求, 是吧! 所以有个标识对目标Activity 来说, 也可以认出请求的对象是张三还是李四; 并且, 请求者对目标Activity 的请求可以不只一个, 某种请求是需要一个名字, 另一个请求是需要一个性别等.

       当然, requestCode 是自己定义的, 我们很难确保它一定是唯一的, 这个就要看开发者自己的处理方式了.

 

  •        请求者Activity, 需要用 startActivityForResult() 替换 startActivity() 方法, 并且覆盖          

 

       protected   void  onActivityResult( int  requestCode,  int  resultCode, Intent data)  

startActivityForResult(intent,0); //0为自己定义的

/** * 该方法是对应startActivityForResult() 的回调方法, 处理目标Activity 返回的结果. * @param reqeustCode 对应上面的startActivityForResult() 方法里面的requestCode, * 例子的requestCode为0, 如果这里的 requestCode 也是0, 那就能对应上前面的请求了 * @param resultCode 这个是目标Activity 返回结果的一个标识, 这个标识是目标Activity 自定义的. * @param data Intent 大家都懂的, 数据在其内部的Bundle 对象中. */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); /*这段代码非必要的*/ //TODO 添加自己的处理代码 your code }

 

  • 目标Activity, 主要是通过调用方法 setResult(int resultCode, Intent data) 或者 setResult(int resultCode) , 后者是不需要返回数据的时候使用, resultCode 可以是自定义的, 也可以在Activity 中有三种常量RESULT_CANCELED=0, RESULT_OK=-1, RESULT_FIRST_USER=1 中选择一种, 他们分别表示运行取消, 运行成功返回和用户自定义的返回码. 当用户按下返回键时, resultCode 就是 RESULT_CANCELED, 在一些情况下也会返回 RESULT_CANCELED, 例如目标Activity崩溃了. RESULT_FIRST_USER 代表了用户自定义返回码的第一个, Android希望我们自定义的返回码都>=1.

/* RESULT_OK 是 Activity的整形常量,这是对返回结果的一个标识, intent 要传递的数据都在里面, 它这里只扮演数据容器的作用, 没有跳转目的的作用, 跳转目的是靠Activity 活动栈来识别的 */ setResult(RESULT_OK, intent); /* 结束自己, 这样按返回键就不会再到达该Activity了 */ finish();

 

 

 

 

 

你可能感兴趣的:(android,user,活动,layout,Class,visio)