场景

Android中点击按钮启动另一个Activity以及Activity之间传值:

在上面启动Activity和传值之后,怎样获取Acitvity的返回值。下面示例实现点击选择头像按钮,跳转到头像显示Activity,并将选择的图片的索引返回,在MainActivity中获取后设置头像。

效果

注:

实现

首先是主页面MainActivity的布局,添加一个选择头像按钮和一个ImageView用来显示头像。

android:id="@+id/image"android:layout_width="wrap_content"android:layout_height="wrap_content"/>

android:id="@+id/button"android:text="选择头像"android:layout_width="wrap_content"android:layout_height="wrap_content"/>

然后在MainActivity中的OnCreate方法中,使用startActivityForResult能启动另一个Activity并能获得返回结果。

要设置一个请求码,这里是200。

Button button =(Button)findViewById(R.id.button);

button.setOnClickListener(newView.OnClickListener() {

@Overridepublic voidonClick(View v) {

Intent intent= new Intent(MainActivity.this,HeadActivity.class);

startActivityForResult(intent,200);

}

});

然后跳转到第二个Activity用来选择头像。首先设置其布局文件,添加一个GridView用来显示要选择的头像照片。

activity_head.xml

android:id="@+id/gridView"android:numColumns="4"android:layout_width="wrap_content"android:layout_height="wrap_content"/>

然后来到其Activity,使用适配器为其设置照片源。

首先声明一个图片数组

private int[] imageId = new int[]{

R.drawable.img1,R.drawable.img2

};

这里引用了drawable下的两张头像照片。

然后使用适配器为照片设置数据源

GridView gridView =(GridView) findViewById(R.id.gridView);

BaseAdapter adapter= newBaseAdapter() {

@Overridepublic intgetCount() {returnimageId.length;

}

@Overridepublic Object getItem(intposition) {return null;

}

@Overridepublic long getItemId(intposition) {return 0;

}

@Overridepublic View getView(intposition, View convertView, ViewGroup parent) {

ImageView imageView;if(convertView ==null)

{

imageView= new ImageView(HeadActivity.this);

imageView.setAdjustViewBounds(true);

imageView.setMaxWidth(158);

imageView.setMaxHeight(150);

imageView.setPadding(5, 5, 5, 5);

}else{

imageView=(ImageView) convertView;

}

imageView.setImageResource(imageId[position]);returnimageView;

}

};

gridView.setAdapter(adapter);

然后在gridView的选项点击事件监听器中,获取选中照片的索引并通过Bundle对象的putInt和intent对象的putExtras将数据进行返回。然后调用 setResult(200,intent);将结果进行返回,这里的请求结果码也设置为200。

完整HeadActivity.java

package com.badao.selectimage;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.view.ViewGroup;

import android.widget.AdapterView;

import android.widget.BaseAdapter;

import android.widget.GridView;

import android.widget.ImageView;public classHeadActivity extends AppCompatActivity {private int[] imageId = new int[]{

R.drawable.img1,R.drawable.img2

};

@Overrideprotected void onCreate(Bundle savedInstanceState) { GridView gridView =(GridView) findViewById(R.id.gridView);

BaseAdapter adapter= newBaseAdapter() {

@Overridepublic intgetCount() {returnimageId.length;

}

@Overridepublic Object getItem(intposition) {return null;

}

@Overridepublic long getItemId(intposition) {return 0;

}

@Overridepublic View getView(intposition, View convertView, ViewGroup parent) {

ImageView imageView;if(convertView ==null)

{

imageView= new ImageView(HeadActivity.this);

imageView.setAdjustViewBounds(true);

imageView.setMaxWidth(158);

imageView.setMaxHeight(150);

imageView.setPadding(5, 5, 5, 5);

}else{

imageView=(ImageView) convertView;

}

imageView.setImageResource(imageId[position]);returnimageView;

}

};

gridView.setAdapter(adapter);

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_head);

gridView.setOnItemClickListener(newAdapterView.OnItemClickListener() {

@Overridepublic void onItemClick(AdapterView> parent, View view, int position, longid) {

Intent intent=getIntent();

Bundle bundle= newBundle();

bundle.putInt("imageId",imageId[position]);

intent.putExtras(bundle);

setResult(200,intent);

finish();

}

});

}

}

然后回到MainActivity怎样接受返回的结果。

ctrl + O重写方法 onActivityResult,如果请求码和返回结果码都是200,首先通过

Bundle bundle = data.getExtras();

获取Bundle对象。

然后通过

int imageId = bundle.getInt("imageId");

获取返回的照片索引数据。

然后给ImageView设置照片源。

@Overrideprotected void onActivityResult(int requestCode, intresultCode, @Nullable Intent data) {

super.onActivityResult(requestCode, resultCode, data);if(requestCode ==200 && resultCode == 200)

{

Bundle bundle=data.getExtras();int imageId = bundle.getInt("imageId");

ImageView imageView=(ImageView) findViewById(R.id.image);

imageView.setImageResource(imageId);

}

}

MainActivity完整示例代码

package com.badao.selectimage;

import androidx.annotation.Nullable;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;public classMainActivity extends AppCompatActivity {

@Overrideprotected void onActivityResult(int requestCode, intresultCode, @Nullable Intent data) {

super.onActivityResult(requestCode, resultCode, data);if(requestCode ==200 && resultCode == 200)

{

Bundle bundle=data.getExtras();int imageId = bundle.getInt("imageId");

ImageView imageView=(ImageView) findViewById(R.id.image);

imageView.setImageResource(imageId);

}

}

@Overrideprotected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Button button=(Button)findViewById(R.id.button);

button.setOnClickListener(newView.OnClickListener() {

@Overridepublic voidonClick(View v) {

Intent intent= new Intent(MainActivity.this,HeadActivity.class);

startActivityForResult(intent,200);

}

});

}

}

java向另一activity输入_Android中调用另一个Activity并返回结果-以模拟选择头像功能为例...相关推荐

  1. Android中调用另一个Activity并返回结果-以模拟选择头像功能为例

    场景 Android中点击按钮启动另一个Activity以及Activity之间传值: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detail ...

  2. 调用另一个Activity

    参考自Google官方文档Traning/Getting Started/Building a simple user interface, Startinganother activity,http ...

  3. 【Android】12.3 在当前Activity中获取另一个Activity的返回值

    分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 在上一节的示例中,通过StartActivity(Intent)方法启动另一个Activity后,这两个Activ ...

  4. Android筑基——Activity的启动过程之同进程在一个Activity中启动另一个Activity(基于api21)

    目录 1. 前言 2. 正文 2.1 Activity类的startActivity()方法 2.2 Instrumentation类的execStartActivity()方法 2.3 Activi ...

  5. java如何在一个Action中调用另外一个Action

    java如何在一个Action中调用另外一个Action /*** 通过远程调用其他系统里的URL获取数据的方法** @param path 需要调用远程的URL地址* @return 返回的是调用U ...

  6. java 调用其他构造函数_我如何在Java中调用另一个构造函数?

    是的,这是可能的: public class Foo { private int x; public Foo() { this(1); } public Foo(int x) { this.x = x ...

  7. java for 最后_Java的for循环中调用了查询服务,最后只打印了循环的最后一条数据(循环次数)次...

    问题描述 1.首先我查询了出来一个对象集合(包含1和2俩个对象) 2.利用上面集合中的某数据循环查询下一个表中的数据.(也就是for循环中调用了查询方法,返回一个对象) 3.在循环体中我需要用到第一次 ...

  8. Android官方开发文档Training系列课程中文版:管理Activity的生命周期之启动一个Activity

    原文地址 : http://android.xsoftlab.net/training/basics/activity-lifecycle/index.html 导言 用户通过导航退出或者返回应用的时 ...

  9. java头像选择系统_安卓Java源程序 带选择头像功能的用户注册 使用Intent回传数据...

    本帖最后由 dori 于 2020-12-18 23:12 编辑 完成带选择头像功能的用户注册应用程序开发. 图1 图2 图3 MainActivity.java文件:import androidx. ...

最新文章

  1. 解决微信H5获取SDK授权报错提示errMsg: “config:fail,Error: 系统错误,错误码:63002,invalid signature [20200908 22:17:17][]“
  2. cookies池和proxy池
  3. 您与此网站建立的连接不安全_PERT地暖管热熔连接到底安全不安全?
  4. 简单的计时器实现(JFrame)
  5. FIR调用DSP48E_05
  6. android rtsp协议转http协议_网络协议HTTP 协议(一)
  7. 为Elasticsearch添加中文分词
  8. vps如何linux内核4.19,Linux kernel 4.19 RC1 发布,一个相当大的版本
  9. 【项目管理】项目管理的三项约束
  10. C++基础与深度解析第六章:函数
  11. C++ 动态申请数组
  12. 开发者实测 M1 芯片报告:除了大型应用程序启动慢点,整体性能优秀!
  13. Tomcat配置阿里云免费的SLL证书
  14. 友元关系可以继承_C++知识点 30:友元
  15. 递归实现将十进制转化为二进制
  16. 视频基础 以及 MP4 容器解封装
  17. ff7重制版青魔法_最终幻想7重制版蒂法全服装获取攻略
  18. 干货 | 每天十亿级数据更新,秒出查询结果,ClickHouse在携程酒店的应用
  19. Rhythmbox中文乱码解决办法
  20. Matlab 校验方法

热门文章

  1. 空调c语言入门自学视频教程,本人大一,自学c语言,想问一下用哪个编程环境比较好啊?...
  2. zabbix 安装_Zabbix的WEB安装与配置
  3. 船舶定位实时查询系统_真趣:IDC机房人员定位系统,位置实时监测,巡检路线智能规划...
  4. C/Cpp / 类的前向声明、不完全类型和完全类型
  5. Pyinstaller封装exe-TypeError: expected str, bytes or os.PathLike object, not NoneType
  6. 启明云端分享|在研发过程中常常会遇到各种问题,小编为大家做了SSD201/202 FAQ整理,我会定期给大家整理相关问题,欢迎关注我们CSDN启明云端技术社区!
  7. zblog php 指定分类,zblogPHP 为某些分类指定分类模板,后台版方法
  8. 的微波感知_微波遥感的特点
  9. kettle在linux定时任务_在Linux下设置Kettle的定时任务
  10. pci-e串口卡linux 驱动下载,万能PCI串口卡驱动下载