36.activity返回携带数据

来源:互联网 发布:手机淘宝开店没反应 编辑:程序博客网 时间:2024/05/15 22:39

有时候需要activity返回的时候携带数据返回,比如短信群发,添加多个联系人的时候,需要选择listView里面的联系人,同时把联系人的数据返回。

首先需要在主activity里面设置意图,进行跳转,使用startActivityForResult而不是startActivity

  Intent intent = new Intent(this, contactActivity.class);    //启动选择联系人的activity    //告诉系统这个activity返回时会返回数据,第二个参数是请求码    startActivityForResult(intent, 10);

跳转到界面以后,封装数据准备携带数据返回

Intent data = new Intent();//把要传递的数据封装到intent对象data.putExtra("name", objects[position]);//data就是intent携带的数据,此activity一旦被销毁data就会传递到此activity中setResult(0, data);  //第一个参数是响应码//销毁当前的activityfinish();
设置条目监听使用setOnItemClickListener
        lv.setOnItemClickListener(new OnItemClickListener(){        //position:用户点击率哪一个条目@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {}        });

获取到封装的数据返回,执行onActivityResult(int requestCode, int resultCode, Intent data)来反馈获取的数据

当一个应该返回数据的activity被销毁的时候,此方法调用,用于接受数据

    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data){    super.onActivityResult(requestCode, resultCode, data);    }


请求码和响应码,主要是针对请求不同的activity用请求不同的activty,同时一个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"    tools:context=".MainActivity"     android:orientation="vertical"    >    <LinearLayout         android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal"        >    <EditText        android:id="@+id/et_name"        android:layout_weight="1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:hint="请输入联系人" />      <Button         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="请选择联系人"        android:onClick="click1"        />      </LinearLayout><EditText     android:layout_width="match_parent"        android:layout_height="wrap_content"        android:lines="5"    /><Button     android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="发送"        android:onClick="click2"    /></LinearLayout>
MainActivity.java

package com.ldw.contact;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.EditText;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void click1(View v){    Intent intent = new Intent(this, contactActivity.class);    //启动选择联系人的activity    //告诉系统这个activity返回时会返回数据    startActivityForResult(intent, 10);    }        //当一个应该返回数据的activity被销毁的时候,此方法调用,用于接受数据    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data){    //根据请求码判断哪一个activity,接受哪一个activity返回的数据    if(requestCode == 10){    EditText et_name = (EditText) findViewById(R.id.et_name);    //获取到传递过来的参数    et_name.setText(data.getStringExtra("name"));    }    super.onActivityResult(requestCode, resultCode, data);    }    }

activity_contact.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>

item_contact.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" >        <TextView        android:id="@+id/tv"        android:layout_width="wrap_content"        android:layout_height="wrap_content"                />    </LinearLayout>


contactActivity.java

package com.ldw.contact;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ArrayAdapter;import android.widget.ListView;public class contactActivity extends Activity {@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_contact);                ListView lv = (ListView) findViewById(R.id.lv);                final String[] objects = new String[]{        "A",        "B",        "C",        "D"        };                lv.setAdapter(new ArrayAdapter<String> (this, R.layout.item_contact, R.id.tv, objects));                //对listView设置条目点击侦听,知道什么时候点击率条目,以及点击了哪一个条目        lv.setOnItemClickListener(new OnItemClickListener(){        //position:用户点击率哪一个条目@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {Intent data = new Intent();//把要传递的数据封装到intent对象data.putExtra("name", objects[position]);//data就是intent携带的数据,此activity一旦被销毁data就会传递到此activity中setResult(0, data);//销毁当前的activityfinish();}        });}}




0 0
原创粉丝点击