java向另一activity输入_Android中调用另一个Activity并返回结果-以模拟选择头像功能为例...
场景
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并返回结果-以模拟选择头像功能为例...相关推荐
- Android中调用另一个Activity并返回结果-以模拟选择头像功能为例
场景 Android中点击按钮启动另一个Activity以及Activity之间传值: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detail ...
- 调用另一个Activity
参考自Google官方文档Traning/Getting Started/Building a simple user interface, Startinganother activity,http ...
- 【Android】12.3 在当前Activity中获取另一个Activity的返回值
分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 在上一节的示例中,通过StartActivity(Intent)方法启动另一个Activity后,这两个Activ ...
- Android筑基——Activity的启动过程之同进程在一个Activity中启动另一个Activity(基于api21)
目录 1. 前言 2. 正文 2.1 Activity类的startActivity()方法 2.2 Instrumentation类的execStartActivity()方法 2.3 Activi ...
- java如何在一个Action中调用另外一个Action
java如何在一个Action中调用另外一个Action /*** 通过远程调用其他系统里的URL获取数据的方法** @param path 需要调用远程的URL地址* @return 返回的是调用U ...
- java 调用其他构造函数_我如何在Java中调用另一个构造函数?
是的,这是可能的: public class Foo { private int x; public Foo() { this(1); } public Foo(int x) { this.x = x ...
- java for 最后_Java的for循环中调用了查询服务,最后只打印了循环的最后一条数据(循环次数)次...
问题描述 1.首先我查询了出来一个对象集合(包含1和2俩个对象) 2.利用上面集合中的某数据循环查询下一个表中的数据.(也就是for循环中调用了查询方法,返回一个对象) 3.在循环体中我需要用到第一次 ...
- Android官方开发文档Training系列课程中文版:管理Activity的生命周期之启动一个Activity
原文地址 : http://android.xsoftlab.net/training/basics/activity-lifecycle/index.html 导言 用户通过导航退出或者返回应用的时 ...
- java头像选择系统_安卓Java源程序 带选择头像功能的用户注册 使用Intent回传数据...
本帖最后由 dori 于 2020-12-18 23:12 编辑 完成带选择头像功能的用户注册应用程序开发. 图1 图2 图3 MainActivity.java文件:import androidx. ...
最新文章
- 解决微信H5获取SDK授权报错提示errMsg: “config:fail,Error: 系统错误,错误码:63002,invalid signature [20200908 22:17:17][]“
- cookies池和proxy池
- 您与此网站建立的连接不安全_PERT地暖管热熔连接到底安全不安全?
- 简单的计时器实现(JFrame)
- FIR调用DSP48E_05
- android rtsp协议转http协议_网络协议HTTP 协议(一)
- 为Elasticsearch添加中文分词
- vps如何linux内核4.19,Linux kernel 4.19 RC1 发布,一个相当大的版本
- 【项目管理】项目管理的三项约束
- C++基础与深度解析第六章:函数
- C++ 动态申请数组
- 开发者实测 M1 芯片报告:除了大型应用程序启动慢点,整体性能优秀!
- Tomcat配置阿里云免费的SLL证书
- 友元关系可以继承_C++知识点 30:友元
- 递归实现将十进制转化为二进制
- 视频基础 以及 MP4 容器解封装
- ff7重制版青魔法_最终幻想7重制版蒂法全服装获取攻略
- 干货 | 每天十亿级数据更新,秒出查询结果,ClickHouse在携程酒店的应用
- Rhythmbox中文乱码解决办法
- Matlab 校验方法
热门文章
- 空调c语言入门自学视频教程,本人大一,自学c语言,想问一下用哪个编程环境比较好啊?...
- zabbix 安装_Zabbix的WEB安装与配置
- 船舶定位实时查询系统_真趣:IDC机房人员定位系统,位置实时监测,巡检路线智能规划...
- C/Cpp / 类的前向声明、不完全类型和完全类型
- Pyinstaller封装exe-TypeError: expected str, bytes or os.PathLike object, not NoneType
- 启明云端分享|在研发过程中常常会遇到各种问题,小编为大家做了SSD201/202 FAQ整理,我会定期给大家整理相关问题,欢迎关注我们CSDN启明云端技术社区!
- zblog php 指定分类,zblogPHP 为某些分类指定分类模板,后台版方法
- 的微波感知_微波遥感的特点
- kettle在linux定时任务_在Linux下设置Kettle的定时任务
- pci-e串口卡linux 驱动下载,万能PCI串口卡驱动下载