zoukankan      html  css  js  c++  java
  • 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,后面还可能会写很多用来学习和交流的文章,或许会有很多疑问和问题,希望能和大家一起交流,共同进步!
  • 相关阅读:
    C# 动态生成word文档
    C# 利用SharpZipLib生成压缩包
    C# 程序异常关闭时的捕获
    轻松学习UML之用例图,时序图
    轻松学习UML之类图,状态图
    C# 一款属于自己的音乐播放器
    C# MessageBox自动关闭
    C# 用户控件之温度计
    Html富文本编辑器
    java工作流引擎证照库类型的流程设计 实现方案与演示案例
  • 原文地址:https://www.cnblogs.com/feiguotianyahaijiao/p/2913676.html
Copyright © 2011-2022 走看看