ActionBar的Home返回键

一.知识点

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标记,如下所示:

Java代码
     Intent intent = new Intent(this, B.class);    
  1. intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   
  2. 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,则在上面的代码里再加上:

Java代码 intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);   
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,则可以像下面写代码:

Java代码
  1. Intent intent = new Intent(this, MainActivity.class);   
  2. intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);    
  3. startActivity(intent); 

 

 

猜你喜欢

转载自blog.csdn.net/u010949962/article/details/17271031
今日推荐