App Bar 点击返回按钮自动返回上一个指定的Activity

需求:

从A界面去到B界面,点击B界面的App Bar返回按钮返回A界面,无需监听返回按钮,让系统自动处理。


实现:

1、首先在B界面设置显示App Bar的返回按钮:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);



 

2、在AndroidManifest.xml中注册B界面的时候,声明其上一个Activity是A界面

<activity
    android:name=".SecondActivity"
    android:parentActivityName=".MainActivity">
    <!--  这里的 meta-data 用于支持 support 4.0 以及以下来指明上级活动 -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".MainActivity"/>
</activity>


 
 



来源:http://hukai.me/android-training-course-in-chinese/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中,Recent App 按钮是系统级别的按钮,通常不能完全禁用。但是,我们可以通过一些技巧来隐藏或者覆盖这个按钮。 下面是一种实现方法: 1. 创建一个透明的 Activity,覆盖在 Recent App 按钮上面,并且将其设置为全屏。 2. 在该 Activity 的 onCreate() 方法中,禁用 Recent App 按钮。具体实现代码如下: ``` @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 隐藏状态栏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // 隐藏导航栏 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE); // 禁用 Recent App 按钮 try { Object service = getSystemService("statusbar"); Class<?> statusBarManager = Class.forName("android.app.StatusBarManager"); Method disableRecent = statusBarManager.getMethod("disable", int.class); disableRecent.invoke(service, DISABLE_RECENT); } catch (Exception e) { e.printStackTrace(); } } ``` 3. 将该 Activity 添加到 AndroidManifest.xml 文件中,并设置为启动 Activity。 ``` <activity android:name=".DisableRecentActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> ``` 4. 在该 Activity 的 onDestroy() 方法中,恢复 Recent App 按钮。具体实现代码如下: ``` @Override public void onDestroy() { super.onDestroy(); // 恢复 Recent App 按钮 try { Object service = getSystemService("statusbar"); Class<?> statusBarManager = Class.forName("android.app.StatusBarManager"); Method disableRecent = statusBarManager.getMethod("disable", int.class); disableRecent.invoke(service, ENABLE_RECENT); } catch (Exception e) { e.printStackTrace(); } } ``` 需要注意的是,这种方法只能隐藏或者覆盖 Recent App 按钮,并不能完全禁用它。同时,由于该方法需要创建一个透明的 Activity,可能会影响系统性能和用户体验。因此,我们建议在使用该方法时慎重考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值