用户与程序的交互需要有界面,在Android系统中,用户与程序的界面交互是通过Activity完成的。Activity是Android应用程序的四大组件之一,它负责管理Android应用程序的界面。一个应用程序一般会包含若干个Activity,每一个Activity组件负责一个界面的展现。
AndroidManifest.xml、MainActivity.java、acivity_main.xml
在AndroidManifest.xml中注册MainActivity。MainActivity继承android.app.Activity或其子类,重写父类方法onCreate( ),在onCreate( )方法中使用setContentView(R.layout.activity_main)方法获得acivity_main.xml中写的布局。
Activity的生命周期中分为三种状态,分别是运行状态、暂停状态和停止状态。
1、运行状态:当Activity在屏幕的最前端时,它是可见的、有焦点的。
2、暂停状态:在某些情况下,Activity对用户来说仍然是可见的,但它不再拥有焦点,即用户对它的操作是没有实际意义的。
3、停止状态:当Activity完全不可见时,它就处于停止状态,但仍然保留着当前状态和成员信息。然而这些对用户来说都是不可见的。
Activity从一种状态转变到另一种状态时会触发一些事件,执行一些回调方法来通知状态的变化,具体方法如下所示:
void onCreate(Bundle savedInstanceState):创建时执行
void onStart():可见时执行
void onRestart():回到前台,再次可见时执行
void onResume():获取焦点时执行
void onPause():失去焦点时执行
void onStop():用户不可见进入后台时执行
void onDestroy():销毁时执行
用于界面跳转
在Android系统中,使用的是Intent进行数据传递。Intent中文翻译为“意图”,它是Android程序中各个组件进行信息传递的一种重要方式,它不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传递。
Intent一般用于启动Activity、启动服务、发送广播等,承担了Android应用程序三大核心组件相互间的通信功能。
通过Intent启动Activity时,需要明确指定激活组件的名称。 如需要在第一个界面(FirstActivity类)启动第二个界面(SecondActivity类),代码如下:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class); //定义一个intent
startActivity(intent); //启动Intent
通过构造方法初始化Intent时,不指定某一特定类名,而是传入字符串,通过字符串匹配符合的目标组件
Intent intent=new Intent("com.example.myintent");
想被匹配的目标组件需要在注册文件中使用标签
<intent-filter>
<category android:name="android.intent.category.DEFAULT"/>
intent-filter>
activity>
注:
为默认category(类型),若不添加,跳转时app会闪退。
直接将数据存到Inent:
源页面:
Intent loginIntent = new Intent(MainActivity.this,LoginSucceed.class);
loginIntent.putExtra("username",userName);
startActivity(intent);
目标页面:
String username = getIntent().getStringExtra("username");
数据较多时,可通过Bundle对象存储数据:
Bundle bundle = new Bundle();
bundle.putString("name", "Linda");
bundle.putInt("age", 20);
Intent intent = new Intent(this,Activity02.class);
intent.putExtras(bundle);
startActivity(intent);
Bundle bundle = getIntent().getExtras();
String stuName = bundle.getString("name");
int stuAge = bundle.getString("age");
(未完待续)