我们都了解使用 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的更多相关文章

  1. Android-----Intent中通过startActivity(Intent intent )显式启动新的Activity

    Intent:即意图,一般是用来启动新的Activity,按照启动方式分为两类:显式Intent 和 隐式Intent 显示Intent就是直接以“类名称”来指定要启动哪一个Activity:Inte ...

  2. Android-----Intent中通过startActivity(Intent intent )隐式启动新的Activity

    显式Intent我已经简单使用过了,也介绍过概念,现在来说一说隐式Intent: 隐式Intent:就是只在Intent中设置要进行的动作,可以用setAction()和setData()来填入要执行 ...

  3. Android - 和其他APP交互 - 让其他app启动你的activity

    前面的两篇文章主要讲了一个方面:从app中启动其他app.但是如果你的app可以处理对其他app有用的操作,你的app也应该响应其他app的操作请求.例如,如果你创建了一个社交app可以分享信息和图片 ...

  4. 【Android Developers Training】 30. 允许其它应用启动你的Activity

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  5. android开发里跳过的坑——onActivityResult在启动另一个activity的时候马上回调

    该问题是由于被启动的activity的launchMode为singleTask模式,该模式下不可以使用onActivityResult,要使用onActivityResult,被启动的activit ...

  6. [android开发篇] [应用组件]Intent 和 Intent 过滤器

    https://developer.android.com/guide/components/intents-filters.html Intent 是一个消息传递对象,您可以使用它从其他应用组件请求 ...

  7. 我的Android 4 学习系列之Intent 和 Broadcast Reciever

    目录 Intent 简介 使用隐式和显式Intent启动Activity.子Acitivity和Service 使用Linkify 使用Broadcast Intent 广播事件 使用 Pending ...

  8. [android]Intent跳转新的Activity可以传递数据过去

    两种方式: 一,直接通过Bundle对象来传递: 如果我们想要给“收件人”Activity说点什么的话,那么可以通过下面这封“E-mail”来将我们的消息传递出去 Intent intent=new ...

  9. 【Android】12.2 利用Intent启动和关闭Activity

    分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 Android应用程序中一般都有多个Activity,在Activity中,通过调用StartActivity方法 ...

随机推荐

  1. SoapUI: 设置case的属性变量

    琐碎的东西也想一点一滴的记下来

  2. Docker运行图形化程序

    原理 Docker支持图形化程序,是利用Linux的X11技术. 相关文章 如何在Docker容器中启动D-Bus 引文详情 如何在Docker容器中启动D-Bus 翻译自 https://georg ...

  3. lightgbm GPU版本安装

     python机器学习-乳腺癌细胞挖掘(博主亲自录制视频)https://study.163.com/course/introduction.htm?courseId=1005269003&u ...

  4. Java基础 awt Graphics2D 生成矩形图片并向内写入字符串

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  5. RabbitMQ安装后无法访问15672端口

    切换到RabbitMQ的安装目录 sbin 目录下执行: rabbitmq-plugins enable rabbitmq_management 即可打开管理界面. rabbitmq的web管理界面无 ...

  6. 对step文件进行信息抽取算法

    任务描述:给定一个step文件,对该文件的字符串进行信息抽取,结构化的组织文件描述模型的数据.形成抽象化数据结构,存入计算机数据库.并能按照有条理结构把这些数据展示出来. 信息抽取的结果描述: 1 数 ...

  7. Spark Streaming反压机制

    反压(Back Pressure)机制主要用来解决流处理系统中,处理速度比摄入速度慢的情况.是控制流处理中批次流量过载的有效手段. 1 反压机制原理 Spark Streaming中的反压机制是Spa ...

  8. pytorch中使用cuda扩展

    以下面这个例子作为教程,实现功能是element-wise add: (pytorch中想调用cuda模块,还是用另外使用C编写接口脚本) 第一步:cuda编程的源文件和头文件 // mathutil ...

  9. [pymongo] pymongo.errors.CursorNotFound Exception

    由於find之後,loop執行時間過長導致timeout, cusor失效 解決方式有以下幾種: 1. 使用batch_size() cursor = collection.find({}).batc ...

  10. 使用 Nginx 阻止恶意 IP 访问

    找到具有明显特征的访问记录,比如: /Dec/::: +] "-" "Ouija_x.86/2.0" "-" 也许是某个开源框架的漏洞,执行 ...