• 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接口。

    
    
  • 相关阅读:
    Android Studio自动排版的两种方法
    面向对象语言为什么要有访问权限控制
    2017年蓝桥杯省赛A组c++第7题(正则问题)
    2017年蓝桥杯省赛A组c++第1题(走迷宫)
    2017年蓝桥杯省赛A组c++第6题(字符串匹配算法填空)
    2017年蓝桥杯省赛A组c++第5题(递归算法填空)
    2016年蓝桥杯省赛A组c++第9题(逆序串问题)
    2016年蓝桥杯省赛A组c++第7题(图论)
    2016年蓝桥杯省赛A组c++第3题(图论)
    Java的四种内部类(含代码实例)
  • 原文地址:https://www.cnblogs.com/yzjT-mac/p/yzj_activity.html
Copyright © 2020-2023  润新知