android中不同activity的传参调用和返回
最近开始接触学习android移动端开发,写一篇关于活动调用和返回的文章,以供大家交流和日后的复习只用。
通过看视频和上网搜索资料,了解到android中活动之间的调用和数据传递主要用到Intent这个类,下面就讲一下我写的两个活动(MainActivity和SecondActivity)之间的调用和返回实例。
MainActivity中的主要代码如下:
1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_main); 5 mainBtn = (Button) findViewById(R.id.mainBtn); 6 mainBtn.setOnClickListener(listener); 7 } 8 9 private OnClickListener listener = new OnClickListener() { 10 11 @Override 12 public void onClick(View v) { 13 Intent intent = new Intent(); 14 intent.setClass(MainActivity.this, SecondActivity.class); 15 intent.putExtra("str", "IntentDemo"); 16 startActivityForResult(intent, REQUESTCODE); 17 } 18 };
主要实现的功能就是在点击mainBtn的时候,生成一个intent对象,将一串键值对("str", "IntentDemo")传递给SecondActivity进行操作,并且记录发起调用的code为REQUESTCODE。
在发起这个调用后,再看看SecondActivity中的代码:
1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 // TODO Auto-generated method stub 4 super.onCreate(savedInstanceState); 5 setContentView(R.layout.second); 6 Intent intent = getIntent(); 7 Bundle bundle = intent.getExtras(); 8 String str = bundle.getString("str"); 9 secondTxt = (TextView) findViewById(R.id.SecondTxt); 10 secondTxt.setText(str); 11 12 secondBtn = (Button) findViewById(R.id.SecondBtn); 13 secondBtn.setOnClickListener(listener); 14 } 15 16 private OnClickListener listener = new OnClickListener() { 17 18 @Override 19 public void onClick(View v) { 20 Intent intent = new Intent(); 21 intent.putExtra("Back", "BackData"); 22 setResult(RESULTCODE, intent); 23 finish(); 24 } 25 };
它将MainActivity传入的数据取出赋给一个TextView文本框,并且有添加了一个按钮:在点击这个按钮的时候,将另外一串键值对存储在一个intent对象中,结束活动。
在SecondActivity活动结束后,程序就会去执行主活动的onActivityResult方法(需要自己手动重写):
1 @Override 2 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 3 if(requestCode == REQUESTCODE){ 4 //比较requestCode和REQUESTCODE,证明活动是否为REQUESTCODE相关的操作发起。 5 if(resultCode == SecondActivity.RESULTCODE){ 6 //比较resultCode和SecondActivity中的RESULTCODE,证明SecondActivity活动是否返回成功。 7 Bundle bundle = data.getExtras(); 8 String str = bundle.getString("Back"); 9 Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show(); 10 } 11 } 12 }
根据请求码requestCode和返回码resultCode判断返回值是否对应,然后读取Intent中的数据,输出。
整个程序的运行结果如下图:
程序启动时的主界面,点击Call,调用SecondActivity类,并且传给其数据;
程序跳转到SecondActivity,文本框中获取了MainActivity中传递来的数据;点击Second,结束
SecondActivity,并且传值返回;
下方Toast输出SecondActivity传回的返回值。
成功完成一次调用的返回。
刚刚开始接触android,后面还可能会写很多用来学习和交流的文章,或许会有很多疑问和问题,希望能和大家一起交流,共同进步!
转载于:https://www.cnblogs.com/feiguotianyahaijiao/archive/2013/02/16/2913676.html