ActionBar的Home返回键

本文详细介绍了如何在Android中设置ActionBar的Home键,并在点击时返回指定Activity。讲解了`setDisplayShowHomeEnabled()`、`setHomeButtonEnabled()`和`setDisplayHomeAsUpEnabled()`等方法的使用。同时,文章讨论了通讯录详情页的常见问题,如电话后返回导致的空指针异常。此外,重点解释了`FLAG_ACTIVITY_CLEAR_TOP`和`FLAG_ACTIVITY_REORDER_TO_FRONT`这两种Intent标志在Activity启动模式中的应用,通过实例说明它们如何影响Activity的栈管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.知识点

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); 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值