1.配置启动Activity
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
2.在Activity中使用Menu
在res/menu/menu_item.xml下创建菜单项
<item
android:id="@+id/menu_item"
android:icon="@drawable/setting"
android:title="@string/menu_item"/>
重写onCreateOptionsMenu()方法创建菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_item, menu);
return true;
}
返回true表示显示菜单。
重写onOptionsItemSelected()方法定义菜单响应事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.menu_item:
break;
default:
break;
}
}
3.使用隐式Intent
通过<action>和<category>的信息,让系统去启动合适的Activity。<category>标签中的信息更加具体指定了当前Activity。<data>指定了当前Activity能响应的数据。
Intent intent = new Intent();
intent.setAction("com.android.activity.MY_ACTION");
intent.addCategory("com.android.activity.MY_CATEGOTY")
startActivity(intent);
使用隐式Intent,不仅可以启动自己程序内的Activity,还可以启动其他程序的Activity。
4.Activity间传递数据
通过putExtra(key,value)存值,通过getXXXExtra取值(key)。
将数据返回给上一个Activity可以复写onActivityResult()方法,其中requestCode值判断数据是从哪个Activity返回的,resultCode判断处理结果是否成功。
5.onSaveInstanceState()
当从ActivityA启动了ActivityB,如果由于内存不足,ActivityA被回收了,当从ActivityB返回到ActivityA,不会执行onRestart()方法,而是会执行ActivityA的onCreate()的方法,因为ActivityA在这种情况下会被重新创建一次。为了保持Activity中的临时数据和状态,可以使用onSaveInstanceState()方法。
onSaveInstance()方法保证在Activity回收之前一定会被调用,使用传入的Bundle对象保存数据,bundle.putXXX(key,value)。在onCreate()方法中从Bundle中取数据。
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("data","test");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(saveInstanceState != null){
String data = saveInstanceState.getStri
ng("data");
}
}
6.活动的启动模式
standard: 系统不会在乎这个Activity是否已经在返回栈中存在,每次启动都会创建该Activity的一个新的实例。
singleTop:在启动Activity时,如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的实例。
singleTask:每次启动该Activtiy,系统首先会在返回栈中检查是否存在该Activity的实例,如果发现已经存在直接使用该实例,并把这个Activity之上的所有活动统统出栈,如果没有发现就会创建一个新的实例。
singleInstance:启用一个新的返回栈来管理这个Activity。