你好,在 fragment 中,我想从联系人中选择一个电话号码并将其插入到 EditText 中
但它在 fragment 中不起作用我在 Activity 中使用它并且它有效。请问你能帮我改一下吗<谢谢
public class Encrypt extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.encrypt, null);
phoneNumberDisplay = (EditText) v.findViewById(R.id.editTextPhoneNumber);
contactsButton=(Button)v.findViewById(R.id.buttonContacts);
contactsButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(v==contactsButton){
Intent intent=new Intent(Intent.ACTION_PICK,Contacts.CONTENT_URI);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(intent, 1);
}
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
Uri ur = data.getData();
Cursor c = managedQuery(ur, null, null, null, null);
if (c.moveToFirst()) {
String s = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
phoneNumberDisplay.setText(s);
}
}
}
return v;
}
错误:RESULT_OK 无法解析为变量
方法 managedQuery(Uri, null, null, null, null) 没有为新类型定义 View.OnClickListener(){}
最佳答案
好吧,你有一个放置不当的括号。我想您希望 `onActivityResult 出现在点击监听器中。
contactsButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(v==contactsButton){
Intent intent=new Intent(Intent.ACTION_PICK,Contacts.CONTENT_URI);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(intent, 1);
}
}
});
// ^^
// This parenthesis should not be here
删除括号和分号,并在此处添加:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
Uri ur = data.getData();
Cursor c = managedQuery(ur, null, null, null, null);
if (c.moveToFirst()) {
String s = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
phoneNumberDisplay.setText(s);
}
}
});
// ^^
// Here, so that it is in the event listener
注意:由于我修复了您帖子中的缩进,所以我看到了这个错误。下次,尝试始终正确缩进您的代码,这样您就会看到那种错误(这也是我不喜欢 K&R 大括号样式的原因)。
更新:
它是 Activity.RESULT_OK
,而不是原始的 RESULT_OK
。
对于 managedQuery
:参见 this question .
对于 getContentManager
:参见 here .
关于java - 在 fragment 中使用 onActivityResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22067696/