0

我有一个显示 ListView 的活动,ListView 由 TextEdit 和 Button 组成。该按钮用于选择联系人的电子邮件并将其放入 TextEdit。

按钮的侦听器是在我的自定义数组适配器中创建的,我通过这个方法调用活动来选择联系人,如下所示:

Intent intent =new Intent(Intent.ACTION_PICK,ContactsContract.CommonDataKinds.Email.CONTENT_URI);

((Activity) v.getContext()).startActivityForResult(intent, MainActivity.act_pick_contact_mail);

我在我的活动中创建了 onActivityResult 方法,我可以得到用户选择的电子邮件,但我不知道按钮是从哪个位置按下的。

这是我写的代码:你知道我该怎么做吗?

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

       //Pick an email
    if(requestCode==MainActivity.act_pick_contact_mail){
        try{
            if(resultCode==Activity.RESULT_OK){    

             Uri uri=data.getData(); 
             Cursor emailCur=getContentResolver().query(uri,null, null, null,null);

             emailCur.moveToFirst();
             String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS));

             //Change the first item, but I need to know the real position
             contactos.set(0, new Contacto(email));
             adapter.notifyDataSetChanged();

             emailCur.close();

            }}
             catch(Exception e){
             Toast.makeText(getBaseContext(), "Email wasn't found", Toast.LENGTH_SHORT).show();      
             e.getCause();
             }        
    } 

}   

提前致谢。

编辑:解决了使用吸气剂在适配器内创建属性的问题。

4

1 回答 1

2

我在这里看到两个选项。

一,将位置保存在活动的类属性中。然后在onActivityResult返回时引用它。

二,使用位置作为您的请求代码。例如MainActivity.act_pick_contact_mail用位置替换。然后onActivityResult假设 >= 0 的请求代码是有效的。

于 2013-05-21T14:48:15.110 回答