一.知识点
1.在Activity上添加ActionBar时可以设置显示ActionBar的Home导航键(就是左上角箭头指向左边的菜单项)
2.可以通过如下方法设置Home键:
1).设置是否显示应用程序的图标(向左的箭头):mActionBar.setDisplayShowHomeEnabled(true);
2).将应用程序图标设置为可点击的按钮:mActionBar.setHomeButtonEnabled(true);
3).将应用程序图标设置为可点击的按钮,并且在图标上添加向左的箭头:用mActionBar.setDisplayHomeAsUpEnabled(true);
3.在onOptionsItemSelected()方法中监听Home但行键,id是:android.R.id.home
4.点击到我们ActionBar中设置的Home按钮:
Intent intent = new Intent(this, FirstActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
二.通讯录的BUG
1.在联系人详情界面打电话,再回来的时候NullpointException----->打电话时Activity被干掉,回来的时候没数据
2.Fragment没有保存在堆栈中,每次都要回到该Activity都会重新创建加载数据
3.Fragment not Attoch to Activitry--------->加载Fragment时按返回键,依附的Activity被Destroy()时出现(见面跳转时要迅速的按才会出现)
三.Intent的FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT的使用(转载)
Activity的两种启动模式:FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT
1. 如果已经启动了四个Activity:A,B,C和D。在D Activity里,我们要跳到B Activity,同时希望C finish掉,可以在startActivity(intent)里的intent里添加flags标记,如下所示:
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- startActivity(intent);
Intent intent = new Intent(this, B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
这样启动B Activity,就会把D,C都finished掉,如果你的B Activity的启动模式是默认的(multiple) ,则B Activity会finished掉,再启动一个新的Activity B。
如果不想重新再创建一个新的B Activity,则在上面的代码里再加上:
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
这样B Activity就会再创建一个新的了,而是会重用之前的B Activity,同时调用B Activity的onNewIntent()方法。
2. 如果已经启动了四个Activity:A,B,C和D,在D Activity里,想再启动一个Actvity B,但不变成A,B,C,D,B,而是希望是A,C,D,B,则可以像下面写代码:
- Intent intent = new Intent(this, MainActivity.class);
- intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
- startActivity(intent);