• Android Intent参数传递


    Android Intent参数传递
    Android参数传递有两种方式,
    1.是从一个Activity传递参数到第二个Activity并在第二个Activity获取数据
    2.是从第二个Activity关闭后将参数传递到第一个Activity
    
    (1)第一种:
    public class FirstDemoActivity extends Activity {
       private Button button3;
       private EditText editText;
         @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.first);
            
            button3=(Button) this.findViewById(R.id.button3);
            editText=(EditText) this.findViewById(R.id.editText1);
            button3.setOnClickListener(new View.OnClickListener() {
                
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    String content=editText.getText().toString();
                    Intent intent=new Intent(FirstDemoActivity.this,SecondDemoActivity.class);
                    //可以把要传递的参数放到一个bundle里传递过去,bundle可以看做一个特殊的map.
                    Bundle bundle=new Bundle();
                    bundle.putString("result", "第一个activity的内容");
                    bundle.putString("content",content);
                    intent.putExtras(bundle);
                    //也可以用这种方式传递.
                    //intent.putExtra("result", "第一个activity的内容");
    
                    startActivity(intent);
                }
            });
        }
    }
    接收参数方法
    public class SecondDemoActivity extends Activity {
        private TextView textView;
         @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.second);
            
            textView=(TextView) this.findViewById(R.id.textView3);
            Intent intent=getIntent();
            String result=intent.getStringExtra("result");
            String content=intent.getStringExtra("content");
            textView.setText(result+" : "+content);
        }
    }
    (2)第二种
    第二种方式需要在跳转到第二个Activity的时候指定requestCode,同时第二个Activity关闭之前也需要指定resultCode,这样我们在获取返回值的时候才能够准确判断是否为我们需要的数据
    1.跳转到第二个Activity并指定resultCode
    private OnClickListener btnAdd_click = new OnClickListener() {
        public void onClick(View arg0) {
            Intent intent = new Intent();
            intent.setClass(getApplicationContext(), LifingAddActivity.class);
            // startActivity(intent);
            /*
             * 如果希望启动另一个Activity,并且希望有返回值,则需要使用startActivityForResult这个方法,
             * 而不是startActivity方法
             * 第一个参数是Intent对象,第二个参数是一个requestCode值,如果有多个按钮都要启动Activity
             * ,则requestCode标志着每个按钮所启动的Activity
             */
            startActivityForResult(intent, 1000);
    
            // 设置切换动画,从右边进入,左边退出
            overridePendingTransition(R.anim.in_from_right,
                    R.anim.out_from_left);
        }
    };
    2.在第一个Activity重写onActivityResult方法
    /**
     * 弹出的Activity关闭后所触发的事件
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        // 根据requestCode判断是否为当前Activity打开的另一个Activity,根据resultCode判断具体执行什么操作关闭的第二个Activity
        if (requestCode == 1000 && resultCode == 1) {
            new Thread() {
                public void run() {
                    String result=intent.getStringExtra("result");
                }
            }.start();
        }
    }
    
    3.在第二个Activity关闭前指定resultCode和data
    /**
     * 保存按钮事件
     */
    private OnClickListener btnSave_click = new OnClickListener() {
        @Override
        public void onClick(View v) {
            if (CheckInput()) {
                new Thread() {
                    public void run() {
                        Bundle data = new Bundle();
                        data.putString("result", "success");
                        Intent intent=getIntent();
                        intent.putExtras(data);
                        setResult(1, intent);                    
                        finish(); // finish当前activity
                        overridePendingTransition(R.anim.in_from_left,
                                R.anim.out_from_right);
                    }
                }.start();
            }
        }
    };
  • 相关阅读:
    转:手册网(程序员开发手册相关网站)
    转:关于视频H264编解码的应用实现
    转:视频压缩的基本概念(x264解压包)
    转:MediaCoder H.264格式编码参数设置及详解
    转: 移动直播技术秒开优化经验
    关于阿里 weex 的使用与案例
    转:视频流服务架构解析(音视频格式介绍)
    转:移动端即时通讯系统实践
    转:GRADLE构建最佳实践
    转: Syslog协议介绍
  • 原文地址:https://www.cnblogs.com/duanjt/p/4611201.html
Copyright © 2020-2023  润新知