Java 联络及;自动完成

Java 联络及;自动完成,java,android,Java,Android,第一个帖子。我对安卓和编程都是新手。我尝试的是弹出一个自动完成文本框,其中包含联系人列表中自动完成的姓名。也就是说,如果他们输入“john”,就会显示“john Smith”或他们联系人中的任何john。代码是基本的,我从一些教程中提取了它 private void autoCompleteBox() { ContentResolver cr = getContentResolver(); Uri contacts = Uri.parse("content:/

第一个帖子。我对安卓和编程都是新手。我尝试的是弹出一个自动完成文本框,其中包含联系人列表中自动完成的姓名。也就是说,如果他们输入“john”,就会显示“john Smith”或他们联系人中的任何john。代码是基本的,我从一些教程中提取了它

private void autoCompleteBox() {

        ContentResolver cr = getContentResolver();

        Uri contacts = Uri.parse("content://contacts/people");

        Cursor managedCursor1 = cr.query(contacts, null, null, null, null);

        if (managedCursor1.moveToFirst()) {

            String contactname;
            String cphoneNumber;

            int nameColumn = managedCursor1.getColumnIndex("name");
            int phoneColumn = managedCursor1.getColumnIndex("number");

            Log.d("int Name", Integer.toString(nameColumn));
            Log.d("int Number", Integer.toString(phoneColumn));

            do {
                // Get the field values
                contactname = managedCursor1.getString(nameColumn);
                cphoneNumber = managedCursor1.getString(phoneColumn);
                if ((contactname != " " || contactname != null)
                        && (cphoneNumber != " " || cphoneNumber != null)) {

                    c_Name.add(contactname);
                    c_Number.add(cphoneNumber);

                    Toast.makeText(this, contactname, Toast.LENGTH_SHORT)
                    .show();
                }

            } while (managedCursor1.moveToNext());

        }

        name_Val = (String[]) c_Name.toArray(new String[c_Name.size()]);
        phone_Val = (String[]) c_Number.toArray(new String[c_Name.size()]);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_dropdown_item_1line, name_Val);

        personName.setAdapter(adapter);

    }
private void autoCompleteBox(){
ContentResolver cr=getContentResolver();
Uri contacts=Uri.parse(“content://contacts/people");
游标managedCursor1=cr.query(contacts,null,null,null,null);
if(managedCursor1.moveToFirst()){
字符串contactname;
字符串cphoneNumber;
int nameColumn=managedCursor1.getColumnIndex(“名称”);
int phoneColumn=managedCursor1.getColumnIndex(“编号”);
Log.d(“int Name”,Integer.toString(nameColumn));
Log.d(“int Number”,Integer.toString(phoneColumn));
做{
//获取字段值
contactname=managedCursor1.getString(nameColumn);
cphoneNumber=managedCursor1.getString(phoneColumn);
如果((contactname!=“”| | contactname!=null)
&&(cphoneNumber!=“”| | cphoneNumber!=null)){
c_Name.add(联系人姓名);
c_编号。添加(cphoneNumber);
Toast.makeText(this,contactname,Toast.LENGTH\u SHORT)
.show();
}
}while(managedCursor1.moveToNext());
}
name_Val=(String[])c_name.toArray(新字符串[c_name.size());
phone_Val=(字符串[])c_Number.toArray(新字符串[c_Name.size());
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_下拉列表_item_1line,name_Val);
setAdapter(适配器);
}
personName是我的自动完成文本框。因此,当我在emulator(4.2)中通过people应用程序手动输入联系人时,它实际上可以工作,但当我在设备上使用它时,它不会弹出任何名称。我相信这是很荒谬的,但我已经试图找到答案,但我一事无成。如果我不问,我就学不会

这是日志

12-11 18:35:09.229:I/ActivityManager(578):显示 12-11 18:35:11.031:I/ActivityManager(578):从pid 4153启动u0{cmp=com.fthatnoise.borrow.me/.AddItem}


12-11 18:35:11.161:D/dalvikvm(4153):GC_,你尝试过这个吗?@Vince:在设备上运行应用程序时,会发生什么情况,你能尝试将它记录下来并粘贴到这里吗?我会看看你发布的内容,今晚回家后我会发布日志。谢谢@Droider当我尝试在设备上运行它时,自动完成框不会弹出,即使我有联系人。没有错误消息或任何东西,我可以键入联系人姓名,但它不会完成。在模拟器上,它工作得很好。@Vince:我没有看到这个:Log.d(“int Name”,Integer.toString(nameColumn));Log.d(“int Number”,Integer.toString(phoneColumn));在日志中。