Android Can';无法获取通讯录中的联系人列表

Android Can';无法获取通讯录中的联系人列表,android,android-contacts,Android,Android Contacts,我有一个显示对话框的函数 public Dialog sendSMS(){ Dialog dialog = new Dialog(this); dialog.setContentView(R.layout.dialogsms); dialog.setTitle("Send SMS"); dialog.setCancelable(true); final Spinner spn = (Spinner)findView

我有一个显示对话框的函数

public Dialog sendSMS(){
        Dialog dialog = new Dialog(this);
        dialog.setContentView(R.layout.dialogsms);
        dialog.setTitle("Send SMS");
        dialog.setCancelable(true);

        final Spinner spn = (Spinner)findViewById(R.id.spn_contatcs);
        final TextView tenso = (TextView)findViewById(R.id.txt_phone);

        final ArrayList<String> ten = new ArrayList<String>();
        final ArrayList<String> so = new ArrayList<String>();

        Cursor phones = _ketquatimkiem.this.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");
        while (phones.moveToNext()){
                String phoneName=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                ten.add(phoneName);
                so.add(phoneNumber);
            }
        phones.close();

        ArrayAdapter<String> arrayAdapter_Contacts = new ArrayAdapter<String>(_ketquatimkiem.this,android.R.layout.simple_spinner_item,ten);
        arrayAdapter_Contacts.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spn.setAdapter(arrayAdapter_Contacts);
        spn.setOnItemSelectedListener(new OnItemSelectedListener(){
            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) {
                tenso.setText("Phone Num:  "+so.get(arg2).toString());  
            }
            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
            }
        });
        return dialog;
    }
public Dialog sendSMS(){
Dialog=新建对话框(此对话框);
setContentView(R.layout.dialogsms);
对话框。设置标题(“发送短信”);
对话框。可设置可取消(true);
最终微调器spn=(微调器)findViewById(R.id.spn\u contatcs);
最终TextView tenso=(TextView)findViewById(R.id.txt_电话);
最终ArrayList十=新ArrayList();
最终ArrayList so=新ArrayList();
游标phones=\u ketquatimkiem.this.getContentResolver().query(ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,null,null,null,ContactsContract.CommonDataTypes.Phone.DISPLAY\u NAME+“ASC”);
while(phones.moveToNext()){
String phoneName=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataTypes.Phone.DISPLAY_NAME));
String phoneNumber=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataTypes.Phone.NUMBER));
添加(电话号码);
添加(电话号码);
}
电话。关闭();
ArrayAdapter ArrayAdapter\u Contacts=新的ArrayAdapter(\u ketquatimkiem.this,android.R.layout.simple\u spinner\u item,十);
arrayAdapter_Contacts.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_项目);
spn.设置适配器(阵列适配器触点);
setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView arg0、视图arg1、内部arg2、长arg3){
tenso.setText(“电话号码:+so.get(arg2.toString());
}
@凌驾
未选择公共无效(AdapterView arg0){
}
});
返回对话框;
}
调用onCreate()

//当我单击listview的项时,我得到quickactiondialog
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共视图单击(AdapterView arg0、视图arg1、整型arg2、长型arg3){
final QuickActionDialog quickAction=新建QuickActionDialog(arg1.getContext(),QuickActionDialog.VERTICAL);
//单击quickactiondialog id==sms的项目时,我显示对话框
quickAction.setOnActionItemClickListener(新建QuickActionDialog.OnActionItemClickListener(){
@凌驾
public void onItemClick(QuickActionDialog源代码、int pos、int actionId){
如果(actionId==ID\u SMS){
Dialog=sendSMS();
dialog.show();
}
}
});
但是我得到了错误:E/AndroidRuntime(15562):java.lang.NullPointerExceptionatspn.setAdapter(arrayAdapter_Contacts)

我在真实设备ss gt-5570上测试。抱歉,我的英语不好:(

在sendSMS()方法中,您正在访问活动的布局

final Spinner spn = (Spinner)findViewById(R.id.spn_contatcs);
该值必须为null,因为活动布局不包含微调器。必须执行以下操作(请参见content.findviewbyd)

final Spinner spn = (Spinner)findViewById(R.id.spn_contatcs);
Dialog dialog = new Dialog(this);
View content = View.inflate(this, R.layout.dialogsms, null);
// your contact stuff
Spinner spn = (Spinner) content.findViewById(R.id.spn_contatcs);
spn.setAdapter(arrayAdapter_Contacts);
dialog.setContentView(content);