Android-----Intent通过startActivityForResult(Intent intent , int 标志符)启动新的Activity
我们都了解使用 startActivity(intent) 新的activity只能传递数据,却无法返回数据,返回新activity返回的数据我们可以替换startActivityForResult(Intent intent , int 标志符)
做个备忘录的例子,两个activity: IntentDemo 和 IntentSecend:
activity_intent_demo.xml代码如下:
<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="com.hs.example.exampleapplication.IntentDemo"> <ListView
android:id="@+id/intent_listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/> </LinearLayout>
IntentDemo 代码如下:
public class IntentDemo extends AppCompatActivity implements AdapterView.OnItemClickListener ,
AdapterView.OnItemLongClickListener{ String [] aMemo = {"1.单击可以编辑备忘" , "2.长按可以清楚备忘" , "3." , "4." , "5." , "6."}; ArrayAdapter<String> arrayAdapter; ListView intent_listView ; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_intent_demo); intent_listView = this.findViewById(R.id.intent_listView); arrayAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,aMemo); intent_listView.setAdapter(arrayAdapter); //设置list view的内容
intent_listView.setOnItemClickListener(this); //绑定单击监听
intent_listView.setOnItemLongClickListener(this); //绑定长按监听
} @Override
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {
Intent intent = new Intent(this,IntentSecend.class);
//intent.putExtra("编号",pos + 1); //传递编号
intent.putExtra("备忘",aMemo[pos]); //传递备忘内容
startActivityForResult(intent , pos); //跳转到编辑内容activity,并以选项位置pos为标志符
} @Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
aMemo[i] = (i+1) + "."; //清楚内容,只剩编号
arrayAdapter.notifyDataSetChanged(); //通知list view更新要显示的内容
return true;
} @Override
protected void onActivityResult(int requestCode , int resultCode , Intent intent){
if(resultCode == RESULT_OK){
aMemo[requestCode] = intent.getStringExtra("备忘");
Toast.makeText(this,aMemo[requestCode].toString(),Toast.LENGTH_SHORT).show();
arrayAdapter.notifyDataSetChanged();
}
}
}
activity_intent_secend.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="com.hs.example.exampleapplication.IntentSecend"> <TextView
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FBBB"
android:gravity="top"
android:text="1."
/> <EditText
android:id="@+id/edit_Text"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="top"/> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onCancel"
android:text="取消"/> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onSave"
android:text="保存"/> </LinearLayout> </LinearLayout>
IntentSecend代码如下:
public class IntentSecend extends AppCompatActivity {
TextView tv ;
EditText et ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_intent_secend);
Intent intent = getIntent();
String str = intent.getStringExtra("备忘"); //读取传过来的备注数据
tv = this.findViewById(R.id.text_view);
tv.setText(str.substring(0,2)); //text view的值
et = this.findViewById(R.id.edit_Text);
if(str.length()>2){ //将传过来的数据去除前两个字符,然后填入edittext
et.setText(str.substring(2));
}
}
public void onSave(View view) {
Intent intent2 = new Intent();
intent2.putExtra("备忘",tv.getText() + "" + et.getText());
setResult(RESULT_OK , intent2);
finish();
}
public void onCancel(View view) {
setResult(RESULT_CANCELED);
finish();
}
}
运行效果:



Android-----Intent通过startActivityForResult(Intent intent , int 标志符)启动新的Activity的更多相关文章
- Android-----Intent中通过startActivity(Intent intent )显式启动新的Activity
Intent:即意图,一般是用来启动新的Activity,按照启动方式分为两类:显式Intent 和 隐式Intent 显示Intent就是直接以“类名称”来指定要启动哪一个Activity:Inte ...
- Android-----Intent中通过startActivity(Intent intent )隐式启动新的Activity
显式Intent我已经简单使用过了,也介绍过概念,现在来说一说隐式Intent: 隐式Intent:就是只在Intent中设置要进行的动作,可以用setAction()和setData()来填入要执行 ...
- Android - 和其他APP交互 - 让其他app启动你的activity
前面的两篇文章主要讲了一个方面:从app中启动其他app.但是如果你的app可以处理对其他app有用的操作,你的app也应该响应其他app的操作请求.例如,如果你创建了一个社交app可以分享信息和图片 ...
- 【Android Developers Training】 30. 允许其它应用启动你的Activity
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- android开发里跳过的坑——onActivityResult在启动另一个activity的时候马上回调
该问题是由于被启动的activity的launchMode为singleTask模式,该模式下不可以使用onActivityResult,要使用onActivityResult,被启动的activit ...
- [android开发篇] [应用组件]Intent 和 Intent 过滤器
https://developer.android.com/guide/components/intents-filters.html Intent 是一个消息传递对象,您可以使用它从其他应用组件请求 ...
- 我的Android 4 学习系列之Intent 和 Broadcast Reciever
目录 Intent 简介 使用隐式和显式Intent启动Activity.子Acitivity和Service 使用Linkify 使用Broadcast Intent 广播事件 使用 Pending ...
- [android]Intent跳转新的Activity可以传递数据过去
两种方式: 一,直接通过Bundle对象来传递: 如果我们想要给“收件人”Activity说点什么的话,那么可以通过下面这封“E-mail”来将我们的消息传递出去 Intent intent=new ...
- 【Android】12.2 利用Intent启动和关闭Activity
分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 Android应用程序中一般都有多个Activity,在Activity中,通过调用StartActivity方法 ...
随机推荐
- thinkphp项目部署在phpstudy里的nginx上
朋友的一个thinkphp做的项目,让我帮他部署一下的,LINUX服务器,用宝塔. 第一台服务器,装上宝塔,宝塔里装NGINX,PHP5.6,再建立网站,绑定域名,访问成功,一切正常! 昨天试着给另一 ...
- SpringCloud 微服务中 @Async 注解自定义线程池 引发的aop 问题
背景 在 使用springCloud 的@Async注解来做异步操作时,想自定义其线程池. 引发问题 自定义完线程池后,发现代码里并没有使用自定义线程池里的线程,于是新建一个demo工程,一样的配置代 ...
- linux下 tab键失效 -bash: !ref: 为绑定变量
报错现象: Linux环境下,按Tab键进行补全时出现上图情况. [root@worker2 cjj]# vim /et-bash: !ref: 为绑定变量 -bash: !ref: 为绑定变量 -b ...
- FinalShell—一体化服务器管理软件(SSH客户端)
下面附上一些截图和官方连接: 官网:http://www.hostbuf.com/ FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发 ...
- Django框架深入了解_01(Django请求生命周期、开发模式、cbv源码分析、restful规范、跨域、drf的安装及源码初识)
一.Django请求生命周期: 前端发出请求到后端,通过Django处理.响应返回给前端相关结果的过程 先进入实现了wsgi协议的web服务器--->进入django中间件--->路由f分 ...
- Oracle 拆分列为多行 Splitting string into multiple rows in Oracle
=========================== The table is as follows: Name | Project | Error 108 test Err1, Err2, Err ...
- cshtml 中的 AppState = Context.Application 和 控制器中的 Application 也相等
AppState = Context.Application @{ ViewBag.Title = "Home Page"; AppState["s1"] = ...
- Oracle Spatial分区应用研究之五:不同分区粒度+本地空间索引效率对比
1.实验目的 若使用本地空间索引,不同分区粒度将产生不同索引组织,其索引分区个数.大小.R-TREE树结构均不相同.那么,在什么分区粒度下的本地空间索引效率较高呢? 2实验数据 实验数据为全国2531 ...
- centos7 替换为 aliyun 源
1.打开centos的yum文件夹 输入命令cd /etc/yum.repos.d/ 2.用wget下载repo文件 输入命令wget http://mirrors.aliyun.com/repo ...
- linux CC攻击解决方法
linux CC攻击1 由于不断的请求接口 导致带宽不足 然后不断的运行mysql语句 造成cpu饱和 这个时候服务器重负不堪 导致运行代码暖慢 导致入侵 一般采取的方法http://newmirac ...