码迷,mamicode.com
首页 > 移动开发 > 详细

Android基础学习第二篇—Activity

时间:2016-04-24 21:30:41      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:

写在前面的话:

1. 最近在自学Android,也是边看书边写一些Demo,由于知识点越来越多,脑子越来越记不清楚,所以打算写成读书笔记,供以后查看,也算是把自己学到所理解的东西写出来,献丑,如有不对的地方,希望大家给与指正。

2. 由于类似于读书笔记,可能格式神马的会比较随(hen)意(chou),大家看着受不了,可以使劲吐槽。

*************************************我只是分割线***************************************

上一篇已经讲了一些关于Project目录结构的东西,这次记录一下关于Android四大组件之一的Activity的一些东西,它也是Android中最基本的模块之一。

<一>什么是Activity?

它叫活动(听着很别扭,这么长时间还是感觉不好接受~),几乎所有的活动都是用来与用户交互的,活动主要关注与视图窗体的创建,一个应用程序可以包含零个或者多个活动,但是包含零个活动的应用比较少。【PS:这话是参考别人的,我只是拿来装X】

其实通俗来说,我们可以把手机当做一个浏览器,而Activity就是其中的一个个网页,在Activity上面,我们可以添加不同的View(就是.NET里面所说的控件),并且可以执行一些操作逻辑。

<二>Activity的生命周期

如图【图片是借用别人的】,

技术分享

Activity的“整个生命周期”是发生在第一次调用onCreate(Bundle)和唯一最后调用onDestroy()方法之间。在onCreate(Bundle)方法中完成活动的初始化操作设置全局状态,比如加载布局、绑定事件等,并在onDestroy()方法释放资源。

Activity的“显示生命周期”是发生在调用onStart()方法以及调用相对应的onStop()方法之间。在这之间,可以在手机屏幕上看到这个活动。随着Activity对用户的可见和不可见状态的改变,这两个方法能被多次调用。

Activity的“前台生命周期”是在onResume()和onPause()方法之间所经历的,在这个周期内,活动处于运行状态,此时的活动是可以和用户进行交互的。

我个人的方法是:创建一个app,然后在Activity的代码中把这些方法全部重写出来,为每个方法打上断点(或者日志输出),Debug进行调试,就基本上明白了什么时候会被调用。

<三>Activity的启动和Activity之间的数据传递

这里我们需要用到一个对象Intent,Intent是Android程序中各组件之间进行交互的一种重要方式,它一般可被用于启动活动、启动服务、以及发送广播等场景,关于它的用法后面再详细说。

1. 简单的启动新的Activity

使用的方法:startActivity(Intent)

示例:

Intent _intent = new Intent();
_intent.setClass(MainActivity.this, ActivityB.class);
startActivity(_intent);

//这个调用方法也可以写成

Intent _intent2 = new Intent(MainActivity.this,ActivityB.class);
startActivity(_intent2);

实例化一个Intent对象,然后指定从当前的MainActivity这个活动,跳转到ActivityB这个活动。

2. 启动新的Activity,并有返回值

使用方法:public void startActivityForResult(Intent intent, int requestCode),注意第二个参数:requesCode,这个参数类似于当初特工接头时的暗号,

示例:

  1. 应用从活动MainActivity跳转到ActivityC,并请求一个字符串;

  2. 在活动Activity中操作,关闭活动ActivityC时,返回请求的字符串给MainActivty;

  3.活动MainActivity获取字符串。

    class ButtonActivitiesClickListener implements OnClickListener {
        @Override
        public void onClick(View v) {
             if (v.getId() == R.id.btnSkipToC) {
             Intent _intent = new Intent();
             _intent.setClass(MainActivity.this, ActivityC.class);
            
             startActivityForResult(_intent, 100);
            
             }
        }
    }

注意,这里就是启动新的活动ActivityC,暗号requestCode是100。

在活动ActivityC中,点击关闭按钮时用void setResult (int resultCode, Intent data)传回请求的字符串,

    class ButtonActivityAListener implements OnClickListener {

        @Override
        public void onClick(View v) {
            if (v.getId() == R.id.btnreturn) {
                Intent _intent = new Intent();
                EditText editText = (EditText) findViewById(R.id.edittext_first);
                String inputStr = editText.getText().toString();
                _intent.putExtra("dashenzaijia", inputStr);
                setResult(Activity.RESULT_OK, _intent);
                finish();
            }
        }
    }

备注:Intent.putExtra(String name, String value)类似于一个数据字典,这个Intent就是ActivityC返回字符串给MainActivity的载体,name就是键,finish()方法类似于winform中的Close();

关闭活动ActivityC后,然后再MainActivity中,有一个虚方法,重载一下,然后从这个方法里面获取ActivityC的返回值,如下:

    @Override
    protected void onActivityResult(int arg0, int arg1, Intent arg2) {
        // TODO Auto-generated method stub
        super.onActivityResult(arg0, arg1, arg2);
        if (arg0 == 100 && arg1 == Activity.RESULT_OK) {
            String returnValue = arg2.getStringExtra("dashenzaijia");
            TextView view = (TextView) this.findViewById(R.id.textview_showresult);
            if (!returnValue.isEmpty()) {
                view.setText("来自Activity C的值:" + returnValue);
            } else {
                view.setText(null);
            }
        }
    }

第一个参数就是当初定义的两个活动之间的暗号,第二个参数是跳转后页面的关闭时的结果,类似于C# 里面窗体关闭时的DialogResult,第三个参数就是返回值的载体。

 

关于Activity的最基本的一些知识就说完了。

Android基础学习第二篇—Activity

标签:

原文地址:http://www.cnblogs.com/yuqf/p/5365472.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!