获取新开启的activity的返回值给开启他的activity

这里写图片描述

//请求码 和结果码
//请求码:区分不同按钮
//结果码:处理不同事件
//activity
public class MainActivity extends ActionBarActivity {

    private EditText number;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        number = (EditText) findViewById(R.id.number);
    }

    public void select(View view) {
        Intent intent = new Intent(this, SelectContactActivity.class);
        // 开启新的 startActivity(intent);

        // 开启一个新的 activity 并且获取这个新开启的 activity 执行完毕后返回的结果。可以 通过请求码,来区分不同的按钮
        startActivityForResult(intent, 1);
    }

    /**
     * 当新开启的 activity 关闭的时候 调用这个方法
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (data != null) {
            String numberString = data.getStringExtra("number");

            //通过请求码,来区分不同的按钮,并设置不同的值 
            if(requestCode==1){//第一个按钮的时侯
                number.setText(numberString);
            }else if(requestCode==2){//第二个按钮的时侯
                number.setText(numberString);
            }

        }       
        /**
         * 可以 通过 resultCode 判断,处理不同的事情
         */
        super.onActivityResult(requestCode, resultCode, data);
    }

    public void send(View view) {

    }

}
//listview
public class SelectContactActivity extends Activity {

    public static final String TAG_STRING = "SelectContactActivity";

    private ListView listView;
    private ArrayList<ContactInfo> infos;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_select_contact);

        listView = (ListView) findViewById(R.id.listview);

        infos = (ArrayList<ContactInfo>) ContactInfoService
                .getContactInfos(this);

        listView.setAdapter(new ContactsAdapter(infos));

        // 给 listview 的条目设置 点击事件
        listView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {

                // 获取当前点击的对象
                ContactInfo contactInfo = infos.get(position);
                String name = contactInfo.getName();
                String number = contactInfo.getNumber();

                // 传递数据给 调用他的 activity
                Intent intent = new Intent();
                intent.putExtra("number", number);

                //通过设置结查码,来告诉调用者,应用什么事
                setResult(0, intent);


                // 关闭当前的 activity ,然后传递 数据 给调用者,就会执行 onActivityResult 的方法
                finish();
            }

        });
    }

    public class ContactsAdapter extends BaseAdapter {
        private ArrayList<ContactInfo> list;

        public ContactsAdapter(List<ContactInfo> list) {
            this.list = (ArrayList<ContactInfo>) list;
        }

        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int position) {
            return list.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            Log.i(TAG_STRING, position + "");

            Log.i(TAG_STRING, list.toString());

            // 获取联系人对象
            ContactInfo info = list.get(position);

            View view = View.inflate(getApplicationContext(),
                    R.layout.contact_item, null);

            TextView tView = (TextView) view.findViewById(R.id.tv_name);

            TextView tView2 = (TextView) view.findViewById(R.id.tv_number);

            tView.setText(info.getName());
            tView2.setText(info.getNumber());

            Log.i(TAG_STRING, info.getName());
            Log.i(TAG_STRING, info.getNumber());

            return view;
        }

    }
}

//业务类 提供数据

/**
 * 获取系统中所有的联系人
 * 
 *
 */
public class ContactInfoService {
    public static List<ContactInfo> getContactInfos(Context context) {
        ArrayList<ContactInfo> list = new ArrayList<>();    

        ContentResolver contentResolver = context.getContentResolver();

        // raw_contact 表的uri
        Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");

        // data 表的 uri
        Uri dateUri = Uri.parse("content://com.android.contacts/data");

        // 查找所有id
        Cursor cursor = contentResolver.query(uri,
                new String[] { "contact_id" }, null, null, null);

        // 联系人对象
        ContactInfo contactInfo = null;

        // 根据 id 查找出所有对 应的数据
        while (cursor.moveToNext()) {
            String id = cursor.getString(0);
            if (id != null) {
                contactInfo = new ContactInfo();
                Cursor data = contentResolver.query(dateUri, new String[] {
                        "data1", "mimetype" }, "raw_contact_id=?",
                        new String[] { id }, null);

                while (data.moveToNext()) {

                    //数据
                    String data1 = data.getString(data
                            .getColumnIndexOrThrow("data1"));

                    //查寻数据的返回值类型
                    String mimietype = data.getString(data
                            .getColumnIndexOrThrow("mimetype"));

                    //姓名
                    if ("vnd.android.cursor.item/name".equals(mimietype)) {
                        contactInfo.setName(data1);

                    //电话号码  
                    }else if("vnd.android.cursor.item/phone_v2".equals(mimietype)){
                        contactInfo.setNumber(data1);                       
                    }

                }
                list.add(contactInfo);
                data.close();
            }



        }
        cursor.close();

        return list;

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值