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/p/2913676.html