startActivityForResult

从一个activity A跳转到另一个activity B,需要获取B的数据时,就使用startActivityForResult去启动B

比如从当前activity跳转到系统联系人的activity,并获取联系人信息

public class DemoActivity extends Activity {
    EditText et, et2;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        et = (EditText) this.findViewById(R.id.et_contact1);
        et2 = (EditText) this.findViewById(R.id.et_contact2);
    }

    public void click(View view) {
        Intent intent = new Intent(this, ContactActivity.class);
        // startActivity(intent);
        startActivityForResult(intent, 1);
    }

    public void click2(View view) {
        Intent intent = new Intent(this, ContactActivity.class);
        // startActivity(intent);
        startActivityForResult(intent, 2);
    }

    /**
     * 当被激活的activity 使用完毕 销毁的时候 就会执行onActivityresult的方法
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        
        System.out.println("结果码为"+ resultCode);
        super.onActivityResult(requestCode, resultCode, data);

        if (data != null) {
            String name = data.getStringExtra("name");
            if (requestCode == 1) {

                et.setText(name);
            }else if(requestCode == 2){
                et2.setText(name);
            }
            
        }
    }

}

联系人操作类

public class ContactActivity extends Activity {
    ListView lv;
    List<String> names;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.contact);
        lv = (ListView) this.findViewById(R.id.lv);
        names = getContacts();    //获取联系人的姓名
        lv.setAdapter(new MyAdapter());
        
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                TextView tv = (TextView) view;
                String name = tv.getText().toString();
                Intent data = new Intent();
                data.putExtra("name", name);
                setResult(3, data);
                // 可以把当前的activity给结束掉 
                finish();
            }
        });
        
    }
    private class MyAdapter extends BaseAdapter{

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return names.size();
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            TextView tv = new TextView(ContactActivity.this);
            tv.setTextSize(28);
            tv.setTextColor(Color.RED);
            tv.setText(names.get(position));
            return tv;
        }
        
    }

    private List<String> getContacts (){
        String rawbase = "content://com.android.contacts/raw_contacts";
        String database = "content://com.android.contacts/data";
        Cursor cursor = this.getContentResolver().query(Uri.parse(rawbase), null, null, null, null);
        List<String> names = new ArrayList<String>();
        while (cursor.moveToNext()) {
            
            String id  = cursor.getString( cursor.getColumnIndex("_id"));
            System.out.println("id ="+ id);
            
            Cursor datacursor = this.getContentResolver().query(Uri.parse(database), null, "raw_contact_id=?", new String[]{id}, null);
            while (datacursor.moveToNext()) {
                


                String type = datacursor.getString(datacursor.getColumnIndex("mimetype"));

                
                if("vnd.android.cursor.item/name".equals(type)){
                    String data1 = datacursor.getString( datacursor.getColumnIndex("data1"));
                    names.add(data1);
                    
                }
                
            }
            datacursor.close();
        
        }
        cursor.close();
        return names;
    }
    
    
}

原文地址:https://www.cnblogs.com/android-zcq/p/3388962.html