让活动切换有两种方式
显示意图和隐式意图
显示意图:只能在本应用中穿梭;
隐式意图:可以调用其他应用程序的活动,包括系统应用,但是需要配置清单文件
-
显式Intent
1) 创建一个新的活动
2) 确定进入新活动的条件
1 Intent intent = new Intent(FirstActivity.this, SecondActivity.class);//第一个参数为上下文,第二个参数是新活动的类 2 startActivity(intent); //启用活动
也可以使用方法
getClass(上下文,class);
-
隐式Intent
配置清单文件
1 <activity 2 android:name="com.example.tangwanzun_2.MainActivity" 3 android:label="@string/app_name" > 4 <intent-filter> 5 <!-- 这里的name是自己起的名字,用来在隐式意图中确认传递的目标--> 6 <action android:name="android.intent.action.MyIntent" /> 7 <!-- 这里表示的是改活动运行的平台,DEFAULT是手机平台,注意这里不能是LAUNCHER,否则程序运行出错 。LAUNCHER的意思是主活动的意思--> 8 <category android:name="android.intent.category.DEFAULT" /> 9 </intent-filter> 10 </activity>
###在活动之间传递数据
隐式意图和显示意图都是可以传递数据的
普通数据的的传值方式
- 向下一个活动传递数据
1) 发送方:
a) new一个intent
b) 使用方法putExtra(“键值”,传递的数据);来传递数
c) startActivity(intent); //启用活动
1 //隐式传值 2 Intent intent = new Intent(); 3 intent.putExtra("Myage", age); 4 intent.putExtra("Myname", name); 5 intent.setClass(MainActivity.this,MainActivity_2.class); startActivity(intent);
1 //显式传值 2 Intent intent = new Intent(); 3 intent.putExtra("Myage", age); 4 intent.putExtra("Myname", name); 5 intent.setAction("android.intent.action.MyIntent"); 6 startActivity(intent);
2) 接收方:
a) 创建一个intent对象 = getIntent();
b) 使用方法getStringExtra(“键值”);来得到数据-----此方法返回一个String
1 Intent intent = getIntent(); 2 String age = intent.getExtra("Myage"); 3 String name = intent.getExtra("Myname");
Bundle传递值的方式
1) 发送方
a) new一个intent
b) new一个Bundle
c) Bundle使用方法putString(“键值”,数据);
d) Intent使用方法putExtra(Bundle);
e) startActivity(intent); //启用活动
1 Intent intent = new Intent(); 2 Bundle bundle = new Bundle(); 3 bundle.putString("Myname", name); 4 bundle.putString("Myage", age); 5 intent.putExtras(bundle); 6 intent.setClass(MainActivity.this, MainActivity_2.class); 7 startActivity(intent);
2) 接收方
a) 创建一个intent对象 = getIntent();
b) 创建一个Bundle对象 = intent.getExtra();
b) Bundle使用方法getString(键值”);来得到数据-----此方法返回一个String
1 Intent intent = getIntent(); 2 Bundle bundle = intent.getExtras(); 3 String age = bundle.getString("Myage"); 4 String name = bundle.getString("Myname");
数据的回传
1) 创建的第一个活动
a) 建立Intent,并找到第二个活动
b) startActivityForResult(intent, 数据请求值);//数据请求值是一个int
c) 重写方法
//用来处理回传值的 //第一个int是接收是第一个活动创建时的请求值 //第二个int是接收是第二个活动返回数据时的请求值 //第三个参数是接收的数据 protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub switch (requestCode) { case 1: if (resultCode == RESULT_OK) { String returnData = data.getStringExtra("return_data"); Toast.makeText(FirstActivity.this, returnData, Toast.LENGTH_LONG).show(); Log.i("回传数据",returnData); } break; default: } super.onActivityResult(requestCode, resultCode, data); }
2) 创建的第二个活动
a) 创建一个intent对象
c) 使用方法intent的方法putExtra(“键值”,传递的数据);来传递数
b) setResut(数据处理结果,intent);//数据处理结果通常是RESULT_OK和RESULT_CANCELED
c) 销毁活动
注意:可以自定义一个按钮在销毁活动的同时传递数据,也可以重写onBackPressed()方法
该方法表示:当用户按下BACK按键时所进行的动作