为Intent附加数据的两种写法
第一种写法,用于批量添加数据到Intent:
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("name","张三");
intent.putExtras(bundle);
putExtras方法是为意图追加额外的数据,意图原来已经具有的数据不会丢失,但key同名的数据会被替换。
接收该种方法传递的附加数据的方法是:
Bundle bundle = this.getIntent().getExtras();
String name = bundle.getString("name");
第二种写法:
这种写法的作用等价于上面的写法,只不过这种写法是把数据一个一个地添加进Intent,这种写法使用起来比较方便,而且只需要编写少量的代码。
Intent intent = new Intent();
intent.putExtra("name","张三");
接收该种方法传递的附加数据的方法是:
Intent intent = this.getIntent();
String name = intent.getStringExtra("name");
Bundle类的作用
Bundle类用作携带数据,它类似于Map,用于存放key-value键值对形式的值。相对于Map,它提供了各种常用类型的putXxx()/getXxx()方法,如:putString()/getString()和putInt()/getInt(),putXxx()用于往Bundle对象放入数据,getXxx()方法用于从Bundle对象里获取数据。
生成[0,100]随机整数:
Random random = new Random();
random.nextInt(101);
nextInt方法是左闭右开的。
byte转换成十进制:每一个字节都是8位的二进制,b&0xff
在TextView的左边添加图片,可以在布局文件中用:
android:drawableLeft="@android:drawable/star_on"
添加ListView中每个textView的点击响应事件用setOnItemClickListener()方法:
lv.setOnItemClickListener(new OnItemClickListener(){});
关闭当前Activity用finish()方法。
得到新打开Activity关闭后返回的数据
如果想在Activity中得到新打开Activity关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent,int requestCode)方法打开新的Activity,新的Activity关闭后向前面的Activity传回数据,为了得到传回的数据,必须在前面的Activity中重写onActivityResult(int requestCode,int resultCode,Intent data)方法。
当新Activity关闭后,新Activity返回的数据通过Intent进行传递,Android平台会调用前面Activity的onActivityResult()方法,把存放了返回数据的Intent作为第三个输入参数传入,在onActivityResult()方法中使用第三个输入参数可以取出新Activity返回的数据。
使用startActivityForResult(Intent intent,int requestCode)方法打开新的Activity,新Activity关闭前需要向前面的Activity返回数据需要使用系统提供的setResult(int resultCode,Intent data)方法实现。
请求码的作用
使用startActivityForResult(Intent intent,int requestCode)方法打开新的Activity,我们需要为该方法传入一个请求码。请求码的值是根据业务需要由自己设定,用于标识请求来源。例如:一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity,不管是哪个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode,int resultCode,Intent data)方法。在onActivityResult()方法中如果需要知道新Activity是由哪个按钮打开的,并且要做出相应的业务处理,可以在打开新Activity时设置不同的请求码,然后在onActivityResult()方法中根据传回请求码的不同而做出不同的处理。
结果码的作用
在一个Activity中,可能会使用startActivityForResult()方法打开多个不同的Activity处理不同的业务,当这些新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode,int resultCode,Intent data)方法。为了知道返回的数据来自于哪个新Activity,在每个新Activity中的setResult(int resultCode,Intent data)方法中设置不同的结果码,然后在前面Activity中的onActivityResult()方法中可以根据结果码的不同而做出不同的业务处理。