zoukankan      html  css  js  c++  java
  • android实现两个activity数据交互

      android如何实现两个Activity数据交互?主要是根据Intent的携带功能,intent可以携带很多信息,比如Bundle,URI甚至对象(此时要序列化,并且对象里面的成员变量如果是对象,也要序列化),实现的具体代码如下:

    package com.example.yzj.android_8_3;
    
    import android.content.Intent;
    import android.net.Uri;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    
    public class MainActivity extends AppCompatActivity {
        private ImageView img;
        private Button btn_register;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            init();
            setListener();
        }
    
        private void setListener() {
            btn_register.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent=new Intent(MainActivity.this,RegisterActivity.class);
                    startActivityForResult(intent, 0x123);
                }
            });
        }
    
        private void init() {
            btn_register=(Button)findViewById(R.id.btn_register);
            img=(ImageView)findViewById(R.id.img);
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if(requestCode==0x123&&resultCode==0x124){
                String str=data.getStringExtra("uri");
                if(str!=null) {
                    Uri uri = Uri.parse(str);
                    img.setImageURI(uri);
                }
            }
        }
    
    }
    package com.example.yzj.android_8_3;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    
    
    /**
     * Created by YZJ on 2016/8/3.
     */
    public class RegisterActivity extends Activity{
        private ImageView img;
        private Button btn_register;
        private Uri uri;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.layout_register);
            init();
            setListener();
        }
    
        private void setListener() {
            img.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent=new Intent(Intent.ACTION_PICK);
                    intent.setType("image/*");
                    startActivityForResult(intent,0x123);
                }
            });
            btn_register.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent=getIntent();
                    if(uri!=null){
                        intent.putExtra("uri",uri.toString());
                    }
                    setResult(0x124, intent);
                    finish();
                }
            });
        }
    
        private void init() {
            img=(ImageView)findViewById(R.id.img);
            img.setImageResource(R.drawable.a);
            btn_register=(Button)findViewById(R.id.btn_register);
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if(requestCode==0x123&&resultCode==RESULT_OK){
                uri=data.getData();
                img.setImageURI(uri);
            }
        }
    }
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <ImageView
            android:id="@+id/img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:maxWidth="50dp"
            android:maxHeight="50dp"
            android:adjustViewBounds="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="50dp"
            android:src="@mipmap/ic_launcher"/>
        <EditText
            android:layout_below="@+id/img"
            android:id="@+id/et_user"
            android:layout_width="350dp"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"/>
        <EditText
            android:layout_below="@+id/et_user"
            android:id="@+id/et_psw"
            android:layout_width="350dp"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"/>
        <Button
            android:id="@+id/btn_register"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/et_psw"
            android:layout_centerHorizontal="true"
            android:text="注册"/>
    </RelativeLayout>

    一般而言,传递一个标识符,如上面的uri是效率比较高的做法,然而,有时候我们需要传递一个对象,那么,可以用到parcelable去做,具体做法可以参考官方API的bitmap,即位图,bitmap实现了parcelable接口。

    
    
  • 相关阅读:
    交叉编译fw_printenv
    解压 xxxx.cpio.gz.u-boot
    创建Uboot 环境变量 bin 文件
    Linux快速显示图片
    移动终端的GPU显卡介绍
    Video Mode Timings
    change systemd service
    device tree DTB DTC 相互转换
    如何写出安全的API接口(参数加密+超时处理+私钥验证+Https)- 续(附demo)
    解决h5在ios 微信中 input框键盘收起 页面底部留白
  • 原文地址:https://www.cnblogs.com/yzjT-mac/p/yzj_activity.html
Copyright © 2011-2022 走看看