1.启用回退按钮
在oncreate方法里
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB){
getActionBar().setDisplayHomeAsUpEnabled(true);
}
2.响应回退按钮
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// TODO
return true;
default:
return super.onOptionsItemSelected(item);
}
}
3.也许你以为这样就行了,注意到上面的TODO了吗。现在让我们加上回退的动作
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent intent=new Intent(packageContext, cls);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
关于intent.addFlags,可参考我的博客:http://blog.youkuaiyun.com/c15522627353/article/details/47256519
然而,我们有更优雅的方式实现步骤3。利用NavUtils类。
1.首先修改清单文件
修改前
<activity
android:name="com.example.listmultichoise.NowActivity"
/>
修改后
<activity
android:name="com.example.listmultichoise.NowActivity"
>
<meta-data android:name="android.support.PARENT_ACTIVITY"
android:value=".BeforeActivity"/>
</activity>
这样就确定了NowActivity的父Activity是BeforeActivity。
2响应回退按钮
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
if(NavUtils.getParentActivityName(this)!=null){
NavUtils.navigateUpFromSameTask(this);
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
如果使用NavUtils的话,最好控制回退图标的显示,当当前activity没有父activity时,就不应该显示图标
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
if(NavUtils.getParentActivityName(this)!=null){
getActionBar().setDisplayHomeAsUpEnabled(true);
}
}