activity间的传值

1.值由A.class传递到B.class
A.class中:

01 Intent intent = new Intent(); 
02  //设置传递方向  
03 intent.setClass(A.this,B.class);  
04 //绑定数据  
05 intent.putExtra("username1",username);  
06 intent.putExtra("userpwd1"userpwd); 
07  /*或者绑定成一捆数据 
08 Bundle data = new Bundle(); 
09 data.putString("username1",username); 
10 data.putString("userpwd1",userpwd);
11 intent.putExtras(data); 
12 */  
13 //启动activity  
14 this.startActivity(intent);  


B.class中:

1 Intent intent = getIntent();  
2 //获取数据  
3 String username = intent.getStringExtra("username1");  
4 String userpwd = intent.getStringExtra("userpwd1");  
5 /* Bundle data = intent.getExtras(); 
6 String username = intent.getString("username1"); 
7 String userpwd = intent.getString("userpwd1"); */

 2.除了A.class可以向B.class传值外,B.class也可以返回值

 A.class中

 this.startActivity(intent);

 改为this.startActivityFroResult(intent,1);//1为请求码

 B.class中

 对传过来的intent对象赋新值

1 intent.putExtra("username2",username2);  
2 intent.putExtra("userpwd2",userpwd2); 
3 this.setResult(1,intent);  
4 this.finish();//结束焦点


A.class中重写

 

1 @Override protected void onActivityResult(int requestCode,int resultCode,Intent data){ 
2  super.onActivityResult(requestCode,resultCode,data);  
3  if(resultCode==1)  
4
5  //可从data中取出值  
6 }  
7 }

 A.class中取出B.class中intent传过来的值

 

 3.intent.setClass(A.this,B.class)的另一种写法

在manifest.xml中B的Activity中加入

1 <intent-filter>
2  
3 <action android:name="com.showB">//这里可以随便写
4  
5 <category android:name = "android.intent.category.DEFAULT">
6  
7 </intent-filter>

那么A中就可以直接写

intent.setAction("com.showB");

来代替

intent.setClass(A.this,B.class);

这也就提示了我们利用intent-filter可以实现其他很多功能


程序中调用其它程序的Activity

1 Intent intent = new Intent(Intent.ACTION_MAIN);
2 ComponentName componentName = new ComponentName("com.android.settings","com.android.settings.WirelessSettings");
3 intent.setComponent(componentName);
4   
5 startActivity(intent);
"com.android.settings"是要打开的程序包名,"com.android.settings.WirelessSettings"是要打开的Activity。

你可能感兴趣的:(Activity)