安卓返回上一页

最近代码写得自己都佩服自己了,从安卓还仅仅是入门到慢慢一点一点地拓展,一整天坐在电脑前,一个一个字母的编写程序。连续几天都亢奋地写代码,用宿舍的人的话来说,就是沉默于代码,日渐消瘦。但是付出的时间越多,所见到的收获还是越多的,而且是可见的收获。趁着app的功能模型轮廓大体上已经出来,就拿点时间来写一下博客记录一下学到的东西,虽然还有很多关于安卓的内容需要更多的时间来写。

在安卓中,需要切换各个activity页面,所以就必须要用到intent意图来完成这一个目的。按照以前的知识,只是用到了intent跳换到另一个页面,当从一个页面带着参数跳到另一个页面,或者当从一个选择页面挑回到原来的页面同时改变选择的内容,或者最上面的标题栏上的返回效果的实现等等,都需要用到一定的技巧。
同时,以前也做过一个通讯录app,但是当时做得比较急,没有考虑到很多细节上的问题,所以在使用intent的时候没有考虑到栈的顺序,所以按返回按键的时候没有出现想象中的效果。

  • 一般的Intent
  • 带参数的Intent
  • 从选择功能页面返回
  • back功能的实现

一般的Intent

一般的intent实现起来十分简单,通常分为显式intent和隐式intent。在这里就不详细涉及到这一部分,只是简单地给出显式intent的例子。

Intent intent = new Intent(MainActivity.this, NewActivity.class);
startActivity(intent);

值得注意的是,当intent是在Fragment中的时候,一般是通过getActivity()来获取当前Activity的值。如下:

Intent intent = new Intent(getActivity(), NewActivity.class);
startActivity(intent);

带参数的Intent

其实大致上的使用方法都差不多,都是设置从一个Activity跳转到另一个Activity,只不多带参数的intent就在跳转的时候设置一下参数。

String tip = "";
Intent intent = new Intent(MainActivity.this, NewActivity.class);
intent.putExtra("tip",tip);
startActivity(intent);

然后在NewActivity中,通过以下的方法来实现取得参数的值。

Intent intent = getIntent();
String value = intent.getStringExtra("tip");

从选择功能页面返回

在编写代码的时候,遇到了一个问题,当从一个页面进入了一个选择功能的页面的时候,选择了一个东西,然后返回到原来的页面。这样就会出现一个问题,因为一开始进入页面的时候并没有经过选择功能页面的,这样在页面中使用getIntent()是取不到值的,程序会报空指针错误。
所以就要通过setResult()来实现这些功能,大体上通过以上的代码:
在原本的Activity中:
加入startActivityForResult()跳转到SelectActivity

startActivityForResult (new Intent(MainActivity.this, SelectActivity.class), 1);

然后可以用以下的方法接收到SelectActivity传回来的消息

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Log.e("Error", data.getStringExtra("selected"));
    Toast.makeText(getActivity(),data.getStringExtra("selected"), 1).show();
    }

在选择功能的页面上,通过setResult()来设置值

Intent intent = getIntent();
intent.putExtra("selected", tip);
SelectActivity.this.setResult(1, intent);
SelectActivity.this.finish();

注意以上的requestCode和resultCode用法和所代表的内容。

back功能的实现

在一般的app页头,都存在一个返回的按键,点击返回就会直接退出当前页面回到上一个Activity,实现的代码如下:

@Override
public void onClick(View view) {
    getActivity().finish();
}

其实这里就是直接finish当前的Activity。

后记
这个博客写得有点久,写了几个小时,一边写一边给人讲解代码,然后呢还要跟另外的一个人聊聊人生,然后写写停停的,总算花了几个小时写完了一篇并不长的博客,接下来,等做完了app之后再总结一下安卓自定义控件的使用吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值