Android 基础课堂
上周我们已经写完登录界面啦,也测试过登录成功和登录失败的情况了,回想一下我们在登录成功和登录失败的时候,分别做了啥呢,没错,成功和失败我们都是弹出一个toast告诉用户登录失败了或者登录成功了,然而现实的场景是什么样的呢。
在现实场景中,如果我们登录失败了,那么弹出一个toast来告知用户,这个是没有问题的,那么登录成功了呢?当然是不能弹出一个toast然后啥都不做的,正常情况下,我们都应该跳转到一个另外的页面,让用户进入到我们的APP,好,本周我们就将继续推移下去,看看登录成功的时候该做些什么。
第六课、如果登录成功了
- 一、场景分析
- 现在的APP,一般有以下两种场景:
- ① 刚一进入APP,就到了登录页面,用户必须通过登录才能进入到APP,才能浏览我们APP里的其他页面
- ② 刚一进入APP会先到达我们的主页面,用户可以对APP内的一部分页面进行浏览,而有些页面的浏览是需要登录的,当用户点击这些页面时,会唤起登录界面,让用户进行登录。一般这样的APP在个人中心也会有一个登录按钮的,通过点击登录按钮可以唤起登录界面
- 以上两种情况其实总体上没有太大的区别,第一种是先有登录页面,成功后唤起一个新的页面,第二种是由一个其他页面唤起登录界面,登录成功时候,做一些需要的处理然后把登录页面杀掉,这里我们主要就第一种情况进行讨论,了解了这种情况那么第二种情况自然也就能清楚的了解了
- 所以就第一种情况而言,就是我们上节课做的,先进入到了一个登录页面,然后让用户进行登录,用户登录失败的时候,弹出一个toast告知用户,用户登录成功的时候,我们也可以弹出一个toast告知用户登录成功了,但是只是弹出一个toast是不行的,如果登录成功了还是在登录页面,那我们登录的意义是什么,用户就只能在一个登录页面登录着玩了,所以当用户登录成功的时候,我们还需要进行页面跳转的处理,将页面跳转到我们希望用户进入到的首页面,所以,该课我们主要讲下两个activity跳转相关的内容。
- 二、Activity的几种跳转方式
- 讲到Activity的跳转,我们需要先来了解下Intent,这是跳转中最重要的东西,Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关信息,
- ① 显示调用方法:它的简单使用如下
- - Intent intent=new Intent(this,OtherActivity.class); //方法1
- - startActivity(intent2);
- 以上是Intent在跳转Activity时最简单的操作在一个Activity中通过startActivity()来跳转到另外一个Activity,此时我们就能成功的从登录页面跳转到一个我们想要跳转到的页面了,由于是从登录页面跳转的,所以在我们调用startActivity()之后,需要再调用下LoginActivity.this.finish()把登录页面销毁掉,不然用户点击返回按钮会回到登录页面,这是不合理的
- 关于Intent的相关知识还有很多,它的作用非常大,感兴趣的话可以对它专门了解下
- ② 隐式调用方法(只要action、category、data和要跳转到的Activity在AndroidManifest.xml中设置的匹配就OK)
-
- 如上图,假定有一个Activity在清单中是这样的声明的,两个都可以,那么我们就可以使用以下代码进行跳转到上面这个Activity中:
- 总之跳转离不开Intent,掌握好Intent将会使我们游刃有余的应对跳转
- 三、数据传递
- 既然我们已经讲了页面跳转相关的内容了,那么数据传递的内容也就在此一起提一下,数据传递是什么概念呢,举个最直接的场景吧,在登录页面,如果我们是使用用户名进行登录的,那么如果要实现登录成功后,跳转到新页面之后,在底部显示一个欢迎语,欢迎内容为“hello,xxxx”,这个xxxx即为该用户的用户名,那么我们是不是需要将登录页面的用户名传递到我们新唤醒的页面用于显示,这时候,在跳转Activity的时候,就需要连带传输数据了,那么我们就来看看数据的传递,我们主要看看我们最常用的方法,即使用Bundle进行传值
- Bundle主要用于传递数据;它保存的数据,是以key-value(键值对)的形式存在的,我们经常使用Bundle在Activity之间传递数据,传递的数据可以是boolean、byte、int、long、float、double、string等基本类型或它们对应的数组,也可以是对象或对象数组。当Bundle传递的是对象或对象数组时,必须实现Serializable 或Parcelable接口,简单用法如下
- Intent intent=new Intent(this, OtherActivity.class);
- intent.setClass();
- Bundle bundle = new Bundle();
- bundle.putString("标记", "放入数据");
- intent.putExtras(bundle);
- startActivity(intent);
- 通过以上步骤,我们就可以将Bundle传递到跳转到的Activity里了,自然Bundle里的数据也就一起传递过去了,那在第二个Activity里该怎么接受数据呢,可以通过getIntent().getExtras().get("key");来获取到指定key的数据,这个key就是之前设置在Bundle里面的,简单是数据传递就是这样的,甚至可以不用Bundle而直接用Intent来传递数据,还可以使用其他方法来传递,都可以通过实践来尝试看看
- 好了,到这我们已经完成登录成功后的跳转处理及数据传递了,关于跳转和数据传递的知识还有太多太多,不可能通过这一次全都涵盖,可以考虑将他们更完整的过一遍,这将会使我们在今后遇到这方面问题时更加游刃有余,本周的基础课堂就到这啦,让我们下周再见~
分享者: | |
---|---|
陌眠 | 封羽(代发) |
时间: 2024-09-30 21:50:32