Android - 页面返回上一页面的三种方式

  今年刚刚跳槽到了新公司,也开始转型做Android,由此开始Android的学习历程。

  最近在解很多UI的bug,在解bug过程中,总结了在UI的实现过程中,页面返回上一页面的几种实现方式。

一. 自己布置一个back的按钮或图片

   当然就要自己写回退实现的逻辑,例如back的id为R.id.back,在onClick方法中,switch case中调用finish方法,case R.id.back: finish();back();

二. 使用系统提供的Action Bar

       Action Bar是一种新増的导航栏功能,在Android 3.0之后加入到系统的API当中,它标识了用户当前操作界面的位置,并提供了额外的用户动作、界面导航等功能。       

       简单来说,就是系统提供的标准组件,让我们方便的实现后退功能。

       ActionBar的添加非常简单,只需要在AndroidManifest.xml中指定Application或Activity的theme是Theme.Holo或其子类就可以了。

但有一点要注意的是,如果要在Java代码中操作ActionBar,例如setTitle,指定其文字,必须在onStart方法中进行,而不能是onCreate方法,因为在系统周期中,onStart方法时View才是可见的。

1     @Override
2     public void onStart() {
3         super.onStart();
4         if (mIsInProvision) {
5             getActionBar().setTitle(R.string.connect_to_internet);
6         }
7     }

  另外,如果要处理action bar的点击事件,例如点击action bar时禁止后退,只需要在onOptionsItemSelected方法中处理android.R.id.home的事件就可以了。id.home就是action bar的id。        

 1     @Override
 2     public boolean onOptionsItemSelected(MenuItem item) {
 3         switch (item.getItemId()) {
 4             case android.R.id.home: 6                     return false;12         }
13         return super.onOptionsItemSelected(item);
14     }

  如上的代码,点击action bar将不能回退。

三. 机器上的back按键

      处理此按键的后退功能,只需要在onBackPressed方法中就可以。

1     @Override
2     public boolean onBackPressed() {
3         return true;
4     }

以上就是自己在解Bug中总结的三种方式,作为小白,继续学习Android~加油~

                                                   - 2016年5月6日午

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏增长技术

PullToRefreshLayout

PullToRefreshLayout是一个用法同系统SwipeRefreshLayout可灵活自定义下拉刷新、上拉加载视图的Android库.

981
来自专栏京东技术

【详解】Android Jetpack 新组件之Navigation的用法和源码结构分析

5年以上开发经验,对架构设计以及性能调优有着深刻认知,负责京东商城商品详情的开发,热衷于学习和创新。

2824
来自专栏AndroidTv

我的2017年总结笔记整理

35111
来自专栏Android-薛之涛

Android-Recyclerview常用总结

在android开发中我们不可避免的会用到Recyclerview,用以替代之前的ListView,GridView,Gallery等.它是support:re...

1232
来自专栏androidBlog

使用ViewDragHelper打造属于自己的DragLayout(抽屉开关 )

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details...

922
来自专栏分享达人秀

SwipeRefreshLayout下拉刷新组件

在实际开发中,经常都会遇到下拉刷新、上拉加载更多的情形,这一期就一起来学习Android系统的SwipeRefreshLayout下拉刷新组件。 一、...

2677
来自专栏何俊林

自定义 Behavior - 仿新浪微博发现页的实现

图:四川九寨沟 本文来自徐俊的独家投稿,徐俊的blog地址为:博客地址:http://blog.csdn.net/gdutxiaoxu/,点击【阅读原文】,可查...

43010
来自专栏葡萄城控件技术团队

Wijmo 更优美的jQuery UI部件集:在对Wijmo GridView进行排序或者过滤时保留选择

许多客户面临这样的场景,他们希望在应用了排序或者过滤之后仍然将最终用户的行选状态保留。通常情况下,当我们在选择了任何行之后应用排序或者过滤会导致回传之后选择状态...

1839
来自专栏developerHaoz 的安卓之旅

知乎 Matisse 源码解析,带你探究高效图片选择库的秘密

可以看到 Matisse 的可拓展性是非常强的,不仅可以自定义我们需要的主题,而且还可以按照需求来过滤出我们想要的文件,除此之外,Matisse 采用了建造者模...

3681
来自专栏Jaycekon

Phantomjs+Nodejs+Mysql数据抓取(2.抓取图片)

概要 这篇博客是在上一篇博客Phantomjs+Nodejs+Mysql数据抓取(1.抓取数据) http://blog.csdn.net/jokerko...

3385

扫码关注云+社区