• 028 Android startActivityForResult()方法的使用及实例应用(选择QQ头像)


    1.startActivityForResult()方法的使用

    如果想在Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新的Activity 关闭后会向前面的Activity传回数据,为了得到传回的数据,必须在前面的Activity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法。

    2.效果图

    点击button,跳转到页面2

    选择需要的头像,自动返回

    3.XML文件布局

    页面1

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        tools:context=".MainActivity">
    
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="vertical">
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
    
                <TextView
                    android:id="@+id/textView_username"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="用户名" />
    
                <EditText
                    android:id="@+id/editText_username"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ems="10"
                    android:inputType="textPersonName" />
            </LinearLayout>
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
    
                <TextView
                    android:id="@+id/textView_password"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="密码" />
    
                <EditText
                    android:id="@+id/editText_password"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ems="10"
                    android:inputType="textPassword" />
            </LinearLayout>
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
    
                <TextView
                    android:id="@+id/textView_confirmpw"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="确认密码" />
    
                <EditText
                    android:id="@+id/editText_confirmpw"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ems="10"
                    android:inputType="textPassword" />
    
    
            </LinearLayout>
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
    
                <TextView
                    android:id="@+id/textView"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="E-mail地址" />
    
                <EditText
                    android:id="@+id/editText"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ems="10"
                    android:inputType="textPersonName" />
            </LinearLayout>
    
    
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="vertical">
    
            <ImageView
                android:id="@+id/imageView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:srcCompat="@mipmap/ic_launcher" />
    
            <Button
                android:id="@+id/button"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Button" />
        </LinearLayout>
    </LinearLayout>

    页面2

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".Page2Activity">
        <GridView
            android:id="@+id/gridview1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="10dp"
            android:horizontalSpacing="3dp"
            android:verticalSpacing="3dp"
            android:numColumns="4">
    
        </GridView>
    
    </LinearLayout>

    GridView 子项的布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <ImageView
            android:id="@+id/img"
            android:layout_width="88dp"
            android:layout_height="88dp"
            android:src="@mipmap/ic_launcher" />
    
    </LinearLayout>

    4.java后台

    页面1

    package com.lucky.test33activity3;
    
    import android.content.Intent;
    import android.support.annotation.Nullable;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    
    public class MainActivity extends AppCompatActivity {
    
        Button button1;
        ImageView imageView;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            button1=findViewById(R.id.button);
            imageView=findViewById(R.id.imageView);
            button1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent=new Intent(MainActivity.this,Page2Activity.class);
                    startActivityForResult(intent,0x01);
                }
            });
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
            if(requestCode==0x01&&resultCode==0x02){
                int id=data.getIntExtra("002",0);
                imageView.setImageResource(id);
            }
            super.onActivityResult(requestCode, resultCode, data);
        }
    }

    页面2

    package com.lucky.test33activity3;
    
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.GridView;
    import android.widget.SimpleAdapter;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class Page2Activity extends AppCompatActivity {
    
        GridView gridView;
        SimpleAdapter simpleAdapter; //简单适配器可以将图片和文件组合起来
        List<Map<String,Object>> list1;
        //Android studio工程将图片转变为的数字
        int[] images={R.mipmap.img01,R.mipmap.img02,R.mipmap.img03,R.mipmap.img04,R.mipmap.img05,R.mipmap.img06,R.mipmap.img07,R.mipmap.img08};
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_page2);
            gridView=findViewById(R.id.gridview1);
    
            //将图片放入list1中
            list1=new ArrayList<>();  //实例化list1
            for (int i = 0; i <images.length ; i++) {
                Map<String,Object> map=new HashMap<>();  //实例化map
                map.put("001",images[i]);   //给map添加值,参数1为代号,参数2为数据值
                list1.add(map);
            }
    
            //实例化simpleAdapter,并设置参数,参数2为数据,参数3为子项的布局文件,参数4为数据的代号,参数5为组件的id
            simpleAdapter=new SimpleAdapter(Page2Activity.this,list1,R.layout.itemsimple,new String[]{"001"},new int[]{R.id.img});
            gridView.setAdapter(simpleAdapter); //设置适配器
    
            //给GridView的列表项添加点击事件
            gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Intent intent1=new Intent();  //接收intent
                    intent1.putExtra("002",images[position]); //放入返回的数据
                    setResult(0x02,intent1);
                    finish(); //关闭页面
                }
            });
        }
    }

    5.效果图

  • 相关阅读:
    谈谈图片上传及canvas压缩的流程
    前端应该懂得初级Web分析指标
    java OPENCV 连通域, Imgproc.findContours 例子,参数说明
    [学习opencv]高斯、中值、均值、双边滤波
    Opencv 图像叠加 添加水印
    帧间提取水印
    opencv mat 转灰度图
    编写一条sql命令,sql删除没有中文的表
    使用JavaCV/OpenCV抓取并存储摄像头图像
    周掌柜
  • 原文地址:https://www.cnblogs.com/luckyplj/p/10516425.html
Copyright © 2020-2023  润新知