将一个activity中得到的结果返回给原来的activity
来源:互联网 发布:淘宝业务员主要做什么 编辑:程序博客网 时间:2024/06/06 21:44
刚刚遇到这么一种场景,就是用户在输入日期的时候我们不想用户自己输入日期,这样造成的错误的可能性很高,于是我们自己写了一个日期显示activity(显示更多信息的日历表),让用户选择其中一个日期,然后将日期返回给日期输入界面。现在我们简单化问题,首先怎么将一个activity的执行结果返回给另一个activity?这里我们用到setResult和startActivityForResult。当我们在activity1中使用startActivityForResult启动activity2之后,如果activity2结束,则会执行activity1中的onActivityResult方法,但是我们怎么在OnActivityResult方法中获取activity2中的结果呢?方法是使用setResult,在activity2执行finish方法结束之前,我们先将结果保存到一个新的Intent中,调用setResult(int resultCode, Intent data),然后我们就可以在activity1中的onActivityResult中获取了。代码如下:
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.owa.testreturnresult.MainActivity"> <Button android:id="@+id/startActivity" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> <TextView android:id="@+id/changeText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hello" /></LinearLayout>activity_second.xml:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_second" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.owa.testreturnresult.SecondActivity"> <Button android:id="@+id/click" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="click" /></RelativeLayout>MainActivity.java:
package com.example.owa.testreturnresult;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button startBtn = (Button) findViewById(R.id.startActivity); startBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivityForResult(intent, 0); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (resultCode) { //resultCode为回传的标记,我在B中回传的是RESULT_OK case 1: Bundle b = data.getExtras(); //data为B中回传的Intent String str = b.getString("data");//str即为回传的值 TextView textView = (TextView) findViewById(R.id.changeText); textView.setText(str); break; default: break; } }}SecondActivity.java:
package com.example.owa.testreturnresult;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Button button = (Button) findViewById(R.id.click); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("data","change message"); setResult(1,intent); finish(); } }); }}运行结果:
0 0
- 将一个activity中得到的结果返回给原来的activity
- 从一个Activity中得到结果
- 得到Activity的返回值
- 【从头学android】从新的Activity中返回数据给前一个Activity
- Activity之间的跳转,传值,返回原来的Activity,对话框
- Activity中获取AsyncTask中onPostExecute的结果返回值
- Android中Activity处理返回结果的实现方式
- Android中Activity处理返回结果的实现方式
- ANDROID中ACTIVITY处理返回结果的实现方式
- 在Activity中得到新打开Activity 关闭后返回的数据
- 将一个对象通过Serializable 传递到另一个Activity中时,这对象在原来的Activity中是否可同步更新?
- 启动其他的Activity并返回结果
- 接收Activity返回的结果startActivityForResult
- Activity通信 之 获取Activity的返回结果
- Activity启动另一个Activity,带结果的返回
- Android启动一个新的activity并携带数据,返回数据给上一个activity
- 激活另外一个activity,并将第二个activity的数据返回.
- 一个Activity中打开另外一个Activity再返回的全部生命周期
- 命令行输出php 并传递参数
- Android常见问题之三
- java.sql.SQLException: ORA-00911: 无效字符 解决方法
- JavaScript定时器原理分析
- 《重构》-2-重构原则-读书笔记
- 将一个activity中得到的结果返回给原来的activity
- 35. Search Insert Position
- Android Drawable、Bitmap、byte[]之间的转换
- kail下开启ssh
- 鼠标移动事件小案例
- 终端下运行python文件的方法
- 工作小结
- [笔记]第一章 Python基础
- JS变量及其作用域