1.在活动中使用Menu
对应的布局文件位于res/menu 中,Item 就是菜单的具体项。在Activity中复习onCreateOptionsMenu(显示) 和onOptionsItemSelected(菜单选择的处理) 方法。
/**
* getMenuInflater()获取MenuInflater对象,调用它的inflate加载布局。
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true; // 返回true表示允许创建的菜单显示,false菜单将无法显示
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {// 判断点击的哪一个菜单项
case R.id.add_item:
Toast.makeText(this, "Add", Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this, "Remove", Toast.LENGTH_SHORT).show();
break;
}
// 返回ture 消费处理,返回false 继续传递下去,触发其他处理事件
return true;
}
2.Intent的介绍
显式Intent:就是Intent中指定开启的内容
隐式Intent:指定一系列抽象的action和category信息,交给系统去分析这个Intent并帮我们找出合适的活动去启动。
在清单文件的
Intent返回数据给上一个活动
用startActivityForResult的方法开启一个Activity,此时传递一个Int 类型requestCode,用于在之后的回调中判断数据的来源。
Intent intent = new Intent(this,SecondActivity.class);
startActivityForResult(intent, 1);
在第二个Activity 也就是SecondActivity中,
Intent intent=new Intent();
intent.putExtra("data_return","Hello FirstActivity");//用于向上一个Activity返回数据
setResult(RESULT_OK,intent);//用于向上一个活动返回处理结果,一般只使用RESULT_OK或者RESULT_CANCLED这两个值
finish();
当第二个活动SecondActivity被销毁之后会调用上一个活动的onActivityResult()方法,需要重写
protect void onActivityResult(int requestCode,int resultCode,intent data){
switch(requestCode){//先判断数据来源请求码 也就是startActivityForResult中的码别
case 1:
if(resultCode==RESULT_OK){//后判断处理结果响应码,也就是setResult中的码别
}
break;
}
活动的生命周期
活动使用任务(Task)来管理活动的,存放在返回栈(Back Stack)中。
七个生命周期方法
OnCreate()
活动第一次被创建的时候调用。完成活动的初始化操作,比如说加载布局、绑定事件等。
onStart()
活动由不可见变为可见的时候调用。
onResume()
在活动准备和用户进行交互的时候调用。此时活动处于返回栈的栈顶,并且处于运行状态
onPause()
在系统准备去启动或者恢复另一个活动的时候调用。通常会在这个方法中将一些消耗CPU的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用。
onStop()
互动完全不可见的时候调用。和OnPause()方法的主要区别在于,如果启动的新活动是一个对话框式的活动,那么OnPause()方法会得到执行,而onStop()方法并不会执行。
onDestroy()
在活动被销毁之前调用,之后活动状态将变为销毁状态。
onRestart()
在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。
活动被回收的处理(此方法不适用活动调用finish后)
利用onSaveInstanceState()方法将需要的数据保存。
protect void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
String tempData="Something you just typed";
outState.putString("data_key",tempData);
}
在onCreate(Bundle saveInstanceState)中将保存的数据取出,然后恢复。
protected void onCreate(Bundle savedInstanceState){
super.onCreate(saveInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
if(savedInstanceState!=null){
String tempData=savedInstanceState.getString("data_key");
//恢复操作
}
}
活动的启动模式
standard :标准模式,任务栈先进后出
singleTop:处于栈顶,就不在创建新的活动
singleTask:每次启动都会检查任务栈中是否存在该活动,由直接使用,并把这个活动之上的所有活动统统出栈,没有就创建一个新的。
singleInstance:一个单独的返回栈来管理这个活动。