为了账号安全,请及时绑定邮箱和手机立即绑定

请问为什么第二个游标会出错?

public class MainActivity extends AppCompatActivity {

   private TextView et1,et2,et3;
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       et1=(TextView)findViewById(R.id.id);
       et2=(TextView)findViewById(R.id.displayname);
       et3=(TextView)findViewById(R.id.number);
       ContentResolver cr=getContentResolver();
       /*
          查询:
          1.要查询的URI,2.查询的字段3.4.查询的条件5.排序
        */
       Cursor c=cr.query(Contacts.CONTENT_URI,new String[]{Contacts._ID,Contacts.DISPLAY_NAME},null,null,null);
        if(c!=null)
        {
            while(c.moveToNext())
            {
                int id=c.getInt(c.getColumnIndex("Contacts._ID"));
                et1.setText(""+id);
                String name=c.getString(c.getColumnIndex("Contacts.DISPLAY_NAME"));
                et2.setText(name);
                Cursor c1=cr.query(Phone.CONTENT_URI,new String[]{Phone.NUMBER,Phone.TYPE},Phone.CONTACT_ID+"="+id,null,null);
                if(c1!=null)
                {
                    while (c1.moveToNext()) {
                        int type = c1.getInt(c1.getColumnIndex("Phone.TYPE"));
                        if (type == Phone.TYPE_HOME) {
                            String number = c1.getString(c1.getColumnIndex("Phone.NUMBER"));
                            et3.setText("家庭"+number);
                        }
                        if (type == Phone.TYPE_MOBILE) {
                            String number = c1.getString(c1.getColumnIndex("Phone.NUMBER"));
                            et3.setText("手机"+number);
                        }
                    }
                    c1.close();
                }
            }
            c.close();
        }
   }
}

把C1有关的代码删除后就可以运行了,,求看错误

正在回答

1 回答

这个错误应该是选择的列于表中的列不匹配,把getColumnIndex中的引号去掉应该就可以了,加了引号和不加引号区别很大

0 回复 有任何疑惑可以回复我~
#1

慕虎7788025 提问者

好的,谢谢了,但有个疑问,取id和联系人名字的时候加引号是可以运行的。。
2016-07-31 回复 有任何疑惑可以回复我~
#2

慕虎7788025 提问者

非常感谢!
2016-08-02 回复 有任何疑惑可以回复我~
#3

沸腾的黑色 回复 慕虎7788025 提问者

不好意思没看到,因为前面两个Contact._ID 和Contact.DISPALY_NAME 代表的值就是你引号里的值,后面的Phone.NUMBER代表的值都是"data1"什么的
2016-08-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android攻城狮的第二门课(第3季)
  • 参与学习       74922    人
  • 解答问题       420    个

手势识别、数据存储和4大组件,让你牢牢掌握之前的基础知识点

进入课程

请问为什么第二个游标会出错?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信