Android 从一个Activity跳转到另一个Activity获取第二个Activity的返回值

来源:互联网 发布:淘宝怎么发布商品信息 编辑:程序博客网 时间:2024/05/17 22:57
在做安卓开发的过程中,经常会在两个Activity之间传递数据,从第一个Activity传递数据到第二个Activity是很简单的,在第一个Activity中这样写代码
Intent intent = new Intent(packageContext, cls);    intent.putExtra(name, value);    startActivity(intent);

然后在第二个Activity中接受就可以了

Intent intent = getIntent();intent.getStringExtra(name);

如果是想要在第一个Activity中接受第二个Activity返回的数据改怎么办呢?其实跟上面的类似,下面就简单演示一个程序。

首先是布局文件activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context=".MainActivity" >    <EditText        android:id="@+id/et_content1"        android:lines="6"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="请输入内容一" />         <EditText        android:id="@+id/et_content2"        android:lines="6"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="请输入内容二" />      <Button        android:onClick="select_content1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="选择内容一" />       <Button        android:onClick="select_content2"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="选择内容二" /></LinearLayout>
第二个activity_content.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >        <ListView         android:id="@+id/lv"        android:layout_width="match_parent"    android:layout_height="match_parent"></ListView></LinearLayout>
还有一个lv_item.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="vertical" >        <TextView         android:id="@+id/sms_info"        android:drawableLeft="@drawable/cqu"        android:gravity="center_vertical"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:textColor="#000000"        android:text="afafga"/>"</LinearLayout>
主Activity函数

public class MainActivity extends Activity {    private EditText et_content1;private EditText et_content2;@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                et_content1 = (EditText) findViewById(R.id.et_content1);        et_content2 = (EditText) findViewById(R.id.et_content2);    }        public void select_content1(View v){    Intent intent = new Intent(MainActivity.this,ListContent2Activity.class);    /**     * 可以一次性完成这项任务,当程序执行到这段代码的时候,     * 假若从T1Activity跳转到下一个Text2Activity,     * 而当这个Text2Activity调用了finish()方法以后,     * 程序会自动跳转回T1Activity,     * 并调用前一个T1Activity中的onActivityResult( )方法。     * */    startActivityForResult(intent, 0);    }        public void select_content2(View v){    Intent intent = new Intent(MainActivity.this,ListContent1Activity.class);    startActivityForResult(intent, 1);    }        /*****     * 接受第二个Activity返回的数据时调用     *      * ****/    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);        if (data == null) {return;}    String contentInfo = data.getStringExtra("contentInfo");    // 根据返回码的不同,设置参数    if (requestCode == 0) {    et_content1.setText(contentInfo);}    if (requestCode == 1) {    et_content2.setText(contentInfo);}        }}
第二个Activity

public class ListContent1Activity extends Activity {private ListView lv;private String[] objects = {"序 缘浅情深","殁年,何为殁年?","似水流年,殁形散之。","“天降神女,是之殁年。”","“济世救民,是之殁年。”","“宸国之后,是之殁年。”","不知说了多少岁月的民谣还在传唱,留芳千古的旷世佳话依旧流传。茶楼说书人仍然热火朝天的诉说一场又一场的风花雪月。","世人向来喜闻才子佳人的旷世绝恋,说书人自然也是随口便吟得一篇佳作。其中,洺帝与神女的一段奇缘固是必不可少。成了百姓茶余饭后的一记解闷良方。","世人爱听的不过是洺帝与神女至死不渝的爱情,又怎会顾得背后的凄凉与落寞。","他们道我为神女,说我为皇后,可我究竟是谁?我忘了。我只记得,有一个与我风雨同舟的少年,我是他的妻。","人生兜兜转转,百转千回,终是奈何缘浅情深。我有幸命中得以见他,即使如今只能在黄泉水畔,奈何桥头等待他来世的一寸回眸,但我亦不后悔。","世间一切爱恨情仇,哪抵一碗孟婆汤。只愿那孟婆之汤别让我忘记太多,记得来世寻他来渡"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_content);lv = (ListView) findViewById(R.id.lv);ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.lv_item,R.id.sms_info, objects);lv.setAdapter(adapter);lv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int positon,long id) {String contentInfo = objects[positon];Intent data = new Intent();// 设置要回传的数据data.putExtra("contentInfo", contentInfo);// 设置回传码和IntentsetResult(0, data);finish();}});}}
public class ListContent2Activity extends Activity {private ListView lv;private String[] objects = {"他将手中的石头揉碎了随风扬走,于是苍穹星辰浩瀚。","世间本无日月,星盘先行。",  "又是一个开天辟地的故事,将最近自己的几个短篇里的梗揉了一下,出了个小练笔。",  "因为是练笔,很短,不到两千字,但却是完整的故事。",  "这里是 烨弥的烨弥。"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_content);lv = (ListView) findViewById(R.id.lv);ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.lv_item,R.id.sms_info, objects);lv.setAdapter(adapter);lv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int positon,long id) {String contentInfo = objects[positon];Intent data = new Intent();// 设置要回传的数据data.putExtra("contentInfo", contentInfo);// 设置回传码和IntentsetResult(1, data);finish();}});}}









0 0
原创粉丝点击