Android跳转回已有活动,Android - base - Activity

四大组件之活动

大纲

活动是什么

创建活动流程

活动间的跳转

活动的生命周期

活动的启动模式

视图界面加载菜单栏Menu

#活动是什么

活动是一种可以包含用户界面的组件,主要用于和用户交互。

简而言之活动就是一个继承了Activity类的Java类,分层类似于Javaweb开发中的Controller层。

#创建活动流程

AppCompatActivity类:SDK向下兼容的Activity

创建一个Java类并继承AppCompatActivity类再重写onCreate()方法

创建一个布局文件(layout目录)

在AndroidMainfest文件中注册活动

...>

#活动间的跳转

Context类:上下文,Activity类继承自Context类

Intent类:意图类

Intent 对象存取数据

intent.putExtra(String key, ... value); // 存储数据

intent.get...(String key); // 取出数据

##Intent 显示启动活动

Intent intent = new Intent(Context, TargetActivity.class);

startActivity(Intent intent);

##Intent 隐式启动活动

action and category 中的内容同时匹配上Intent 目标活动才会响应

Intent intent = new Intent("com.example.cheng.app01.MY_ACTION");

// 默认的category值无需设置

intent.addCategory("com.example.cheng.app01.MY_CATEGORY");

startActivity(Intent intent);

##携带数据跳转活动

MainActivity.java

// 启动活动2

protected void startActivity02(View view) {

Intent intent = new Intent(this, Activity02.class);

// 存储数据

String data = "Hello Activity02~";

intent.putExtra("data", data);

/**

* 参数2:请求码

*/

startActivityForResult(intent, 1);

}

/**

* startActivityForResult()方法启动的活动销毁后的回调方法

* @param requestCode 请求码

* @param resultCode 处理结果

* @param data 携带数据的Intent

*/

@Override

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

switch(requestCode) {

case 1:

if(resultCode == RESULT_OK) {

// 从intent对象获取回传的数据

String return_data = data.getStringExtra("return_data");

Log.d(TAG, "onActivityResult: return_data = " + return_data);

}

}

}

Activity02.java

// 销毁活动并传入数据

protected void finishActivity(View view) {

Intent intent = new Intent();

// 返回数据

String return_data = "Hello MainActivity";

intent.putExtra("return_data", return_data);

/**

* 参数1:处理结果码

*/

setResult(RESULT_OK, intent);

// 销毁当前活动

finish();

}

##启动活动相关方法

启动活动且接收启动活动销毁后回传的数据

startActivityForResult(Intent intent, int requestCode);

requestCode要唯一,启动活动销毁后会回调传入onActivityResult()方法,届时需要用请求码区分是哪个请求回传的数据。

启动活动

startActivity(Intent intent);

销毁活动

finish();

startActivityForResult()方法启动的活动销毁后的回调方法

onActivityResult(int requestCode, int resultCode, Intent data)

返回键回调方法

onBackPressed()

设置回传数据

activity.setResult(int resultCode, Intent intent)

resultCode会在onActivityResult方法中用到

#活动的生命周期

活动存储空间是栈结构:先进后出

活动状态

运行:与用户交互

暂停:未跟用户交互 且 未完全不可见

停止:完全不可见

销毁:默认返回既销毁

活动生命周期回调方法

完整生存期

onCreate():活动第一次创建时调用

onDestroy():活动销毁前调用

可见生存期

onStart():由不可见变为可见时调用

onStop():完全不可见时调用

交互生存期

onResume():准备好与用户进行交互时调用

onPause():系统准备去启动或恢复另一个活动时调用

停止变启动:

onReStart():停止变运行之前调用

af64cf6478fb

活动的生命周期

#活动的启动模式

af64cf6478fb

启动模式配置

singleInstance:单独存放一个活动栈 适合被其他应用调用

singleTask:单例 但会使上层活动全部出栈

singleTop:除栈顶启动栈顶 启动其他重建实例

standard:每次创建新实例

#视图界面加载菜单栏Menu

首先需要一个菜单menu文件

填充菜单栏 填充 inflater

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main_menu, menu);

return true;

}

定义菜单项点击事件 根据id

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.main_menu_add:

// 单击事件逻辑

break;

default:

}

}

#结尾

第一次认真写博客,加油~

我挥舞着键盘和本子,

发誓要把世界写个明明白白...

I

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值