场景
AndroID中点击按钮启动另一个Activity以及Activity之间传值:
https://www.jb51.net/article/178218.htm
在上面启动Activity和传值之后,怎样获取Acitvity的返回值。下面示例实现点击选择头像按钮,跳转到头像显示Activity,并将选择的图片的索引返回,在MainActivity中获取后设置头像。
效果
注:
实现
首先是主页面MainActivity的布局,添加一个选择头像按钮和一个ImageVIEw用来显示头像。
<?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="vertical"tools:context=".MainActivity"><ImageVIEw androID:ID="@+ID/image" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content"/><button androID:ID="@+ID/button" androID:text="选择头像" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content"/></linearLayout>
然后在MainActivity中的OnCreate方法中,使用startActivityForResult能启动另一个Activity并能获得返回结果。
要设置一个请求码,这里是200。
button button = (button)findVIEwByID(R.ID.button); button.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { Intent intent = new Intent(MainActivity.this,headActivity.class); startActivityForResult(intent,200); } });
然后跳转到第二个Activity用来选择头像。首先设置其布局文件,添加一个GrIDVIEw用来显示要选择的头像照片。
activity_head.xml
<?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="vertical" tools:context=".headActivity"> <GrIDVIEw androID:ID="@+ID/grIDVIEw" androID:numColumns="4" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content"/></linearLayout>
然后来到其Activity,使用适配器为其设置照片源。
首先声明一个图片数组
private int[] imageID = new int[]{ R.drawable.img1,R.drawable.img2 };
这里引用了drawable下的两张头像照片。
然后使用适配器为照片设置数据源
GrIDVIEw grIDVIEw = (GrIDVIEw) findVIEwByID(R.ID.grIDVIEw); BaseAdapter adapter = new BaseAdapter() { @OverrIDe public int getCount() { return imageID.length; } @OverrIDe public Object getItem(int position) { return null; } @OverrIDe public long getItemID(int position) { return 0; } @OverrIDe public VIEw getVIEw(int position,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); }else { imageVIEw = (ImageVIEw) convertVIEw; } imageVIEw.setimageResource(imageID[position]); return imageVIEw; } }; 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 class headActivity extends AppCompatActivity { private int[] imageID = new int[]{ R.drawable.img1,R.drawable.img2 }; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { GrIDVIEw grIDVIEw = (GrIDVIEw) findVIEwByID(R.ID.grIDVIEw); BaseAdapter adapter = new BaseAdapter() { @OverrIDe public int getCount() { return imageID.length; } @OverrIDe public Object getItem(int position) { return null; } @OverrIDe public long getItemID(int position) { return 0; } @OverrIDe public VIEw getVIEw(int position,5); }else { imageVIEw = (ImageVIEw) convertVIEw; } imageVIEw.setimageResource(imageID[position]); return imageVIEw; } }; grIDVIEw.setAdapter(adapter); super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_head); grIDVIEw.setonItemClickListener(new AdapterVIEw.OnItemClickListener() { @OverrIDe public voID onItemClick(AdapterVIEw<?> parent,VIEw vIEw,int position,long ID) { Intent intent = getIntent(); Bundle bundle = new Bundle(); 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设置照片源。
@OverrIDe protected voID onActivityResult(int requestCode,int resultCode,@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 class MainActivity extends AppCompatActivity { @OverrIDe protected voID onActivityResult(int requestCode,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); } } @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); button button = (button)findVIEwByID(R.ID.button); button.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { Intent intent = new Intent(MainActivity.this,200); } }); }}
总结
以上所述是小编给大家介绍的AndroID中调用另一个Activity并返回结果(选择头像功能为例),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
以上是内存溢出为你收集整理的Android中调用另一个Activity并返回结果(选择头像功能为例)全部内容,希望文章能够帮你解决Android中调用另一个Activity并返回结果(选择头像功能为例)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)