专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Android

这个Android的示例程序运行出错,来看一下

发布时间:2010-05-30 10:52:57 文章来源:www.iduyao.cn 采编人员:星星草
这个Android的示例程序运行出错,高手进来看一下。
Activity01.java
Java code

package com.yarin.android.Examples_03_02;

import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.PhoneLookup;
import android.widget.TextView;

public class Activity01 extends Activity
{
    public void onCreate(Bundle savedInstanceState)
    {
        TextView tv = new TextView(this);
        String string = "";        
        super.onCreate(savedInstanceState);    
        //得到ContentResolver对象
        ContentResolver cr = getContentResolver();  
        //取得电话本中开始一项的光标
        Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        //向下移动一下光标
        while(cursor.moveToNext()) 
        { 
            //取得联系人名字
            int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);     
            String contact = cursor.getString(nameFieldColumnIndex); 
            //取得电话号码
            int numberFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.NUMBER);    
            String number = cursor.getString(numberFieldColumnIndex);
            
            string += (contact+":"+number+"n");
        }
        cursor.close();
        //设置TextView显示的内容
        tv.setText(string);
        //显示到屏幕
        setContentView(tv);
    }
}


本人才开始自学Android,这是《Android应用开发揭秘》中的示例源代码,上面贴的是主要代码,完整项目文件可到这个链接下载http://d.download.csdn.net/down/2263464/leejiang1982 。我不知道到底哪里出错了,才开始学,不是很懂。希望有高手能下载代码后运行一下,看一下到底哪里出错了。

------解决方案--------------------
你的androidManefest.xml写错了,导致无法在launcher界面显示icon

错误的:
android.intent.action.Main
正确的:
android.intent.action.MAIN

其他的,代码本身没有问题。
------解决方案--------------------
int numberFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.NUMBER);

这句出错了,数据库中,contacts这张表中,不存在numbers这一列.

书上的例子大多跟不上时代了,建议你自己去
android.git.kernel.org/ 去下载source code去看吧

如果你是初学者,就不要看书了,把sdk目录下的/doc/index.html打开
按照:dev guide->referrence->resource这个顺序看一遍,比看10本书都管用
------解决方案--------------------
检查数据库,应该是没有这一列了。
------解决方案--------------------
PhoneLookup.NUMBER ,这个是字符串常量,它的值是"number" ,而getColumnIndex(String columnName) 
Returns the zero-based index for the given column name, or -1 if the column doesn't exist.
这个方法是返回一个从0开始计数的列号,如果没有这个列,则反回-1
你的代码里
//取得电话号码
int numberFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.NUMBER);
String number = cursor.getString(numberFieldColumnIndex);
第一句是取得列号,这句能正确执行,numberFieldColumnIndex的值此时为-1,因为没有"number"这个列
第二句,要据列号取得值,-1显然不是个正确的列号,报错.
我也是刚学的
------解决方案--------------------
在while (cursor.moveToNext())之前最好先cursor.moveToFirst()一下。
典型用法是这样:
if (cursor.moveToFirst()) {
do {
....
while (cursor.moveToNext());
------解决方案--------------------
if (cursor!=null&&cousor.getCount()>0) {
do {
....
while (cursor.moveToNext());
------解决方案--------------------
拿着源码熟悉环境的方法的确是最可行的办法之一。但是越是在这种情况下出错了。就越是要自己想办法找原因。初学者最好的经验来源与此
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: