`
abc20899
  • 浏览: 908036 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android开发:Activity之间的传值

阅读更多
方法1: 1给2传值

Activity1:

Java代码


final Intent intent = new Intent(mCtx,Activity1.class) ;   //将当前用户传递下去  
intent.putExtra("user", mUser); 
startActivity(intent); 

里边mUser是一个对象,传的事实上是一个Map,"user"是对象mUser的key

Activity2:

Java代码


mUser = (User) getIntent().getSerializableExtra("user"); 

mUser是对象,getIntent()是Activity的方法,值得注意的是得到的mUser 不是引用,而是new了一个对象并赋值,如果这东西要回传的话,要startActivity(intent);就没用了。

所以用方法2:

Activity1:

Java代码


intent.setClass(mCtx, Activity2.class); 
intent.putExtra("user", mUser); 
startActivityForResult(intent, 1); 

并且在Activity1中

Java代码


protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
super.onActivityResult(requestCode, resultCode, data);  
if(resultCode==1 || data.getSerializableExtra("putUserbyhua")!=null)  
mUser=(User)getIntent().getSerializableExtra("putUserbyhua"); 
}

Activity2:

获取传来的值

Java代码


mIntent = getIntent()   mUser=(User) mIntent.getSerializableExtra(UserConst.USER_DATA); 

在按返回键时跳转到1

Java代码


@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) {  
if(keyCode == KeyEvent.KEYCODE_BACK){  
final Intent intent=new Intent();  
intent.setClass(mCtx, Activity2.class);  
intent.putExtra("putUserbyhua",mUser);  
this.setResult(1);  
this.finish();  
}  
return super.onKeyDown(keyCode, event); 
}


public class IntentTest extends Activity {   
/** Called when the activity is first created. */    
private EditText et1;    
@Override    
public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);        
setContentView(R.layout.main);        
et1=(EditText)findViewById(R.id.editText1);        
Button bt=(Button)findViewById(R.id.button1);         bt.setOnClickListener(new ButtonListener());     }    
class ButtonListener implements OnClickListener{         @Override       
public void onClick(View arg0) {           
String val=et1.getText().toString();            
//生成一个Intent对象            
Intent intent=new Intent();            
//设置传递的参数            
intent.putExtra("val", val);            
//从Activity IntentTest跳转到Activity IntentTest01             intent.setClass(IntentTest.this,IntentTest01.class);            
//启动intent的Activity            
IntentTest.this.startActivity(intent);        
}             
}
}
IntentTest01.java代码如下:

public class IntentTest01 extends Activity{    
@Override    
public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);        
setContentView(R.layout.intent01);        
Intent intent=getIntent();        
String value=intent.getStringExtra("val");        
TextView et=(TextView)findViewById(R.id.textView1);        
et.setText(value);    
}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics