Android ApiDemo学习(三)activity(3)

接着activity的demo

 

  • Receive Result

之前我们用activity1启动activity2,都是用startActivity。这种方式可以实现1向2传送数据。那么如果2需要向1返回数据呢?需要用startActivityForResult(Intent intent,int code)。

对于activity1:

-startActivityForResult(Intent intent,int code):参数1是activity1向activity2传送的intent,code是activity1发给activity2的代号!

-重写方法onActivityResult(int requestCode,int resultCode, Intent intent):当activity1接收到activity2发送来的result时,就调用这个函数。其中,requestCode是activity1当初启动activity2时发给activity2的代号,resultCode是activity2返回给activity1的代号,intent是activity2返回给activity1的intent。

对于activity2:

-setResult(int resultCode, Intent intent):resultCode就是activity2返回给activity1的代号,intent是activity2返回给activity1的intent。

总结:

1向2发intent和code在startActivityForResult中,2向1发intent和code在setResult中。

1接收2发回来的intent和code在onActivityResult中。

  • recreate

在ActivityRecreate.java文件中,展示了如何recreate一个activity。recreate会新建一个activity的实例,这个实例会覆盖上一次创建的实例。recreate的内部其实就是调用了onCreate。可以理解为,recreate修改了上一个activity实例的配置。比如本例就是修改了整个activity的风格(theme)。通过setTheme实现新风格的加载。

  • redirection

RedirectEnter、RedirectMain、RedirectGetter之间的切换。用到了SharedPreference和startActivityForResult。没有新的知识点。

  • ReorderActivities

本例实现activities的重新排序,效果:

activity1——2——3——4——2——3.......

点击返回时.......——3——2——4——3——1:可以看到,3和1之间的2移动到了4之后!

也就是说,原本的activity栈是:1、2、3、4

现在的activity栈是:1、3、4、2

看代码ReorderFour.java中, 从4跳转到2的intent做了一点特别的事情:intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);这个flag表示把activity重新排序,从原来位置移动到栈顶!

可以试着把这句话注释掉,效果:

activity1——2——3——4——2——3....

点击返回时.......——3——2——4——3——2——1:可以看到,新加了一个2在栈顶,原来栈里面的2还在!

  • Save & Restore State

这个例子和之前的Persistent State类似,都是保存UI状态。但Persistent State是使用SharedPreference保存数据,利用activity的onPause和onResume来实现。本例是使用 onSaveInstanceState()实现。注意本例中,点击返回按钮不能看到效果,可以通过旋转屏幕测试。onSaveInstanceState会自动保存xml布局文件中设置了id号的对象。对onSaveInstanceState的官方解释,可参考翻译版本:http://blog.csdn.net/ddna/article/details/5123482

  • Screen Orientation

在java代码中如何改变UI显示的方向——横屏竖屏。ActivityInfo类的以SCREEN_ORITATION_开头的常量表示屏幕方向。通过setRequestedOrientation(方向常量)来设置屏幕方向。这个例子还显示了如何使用spinner控件来展示一个下拉列表。spinner控件和数据之间依然使用adapter作为桥梁,和listview类似。

 

 

 

你可能感兴趣的:(java,android,UI,xml,ListView,测试)