得到空指针异常?

编程入门 行业动态 更新时间:2024-10-26 20:35:15
本文介绍了得到空指针异常?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我试图在一个数组中包含联系人的名称,在另一个数组中包含他们的类型,但无法通过空指针异常.这是我的代码.我已经指出了我得到空指针异常的那一行.请帮忙..提前致谢.

I am trying to have name of contacts in one array and their types in another array,but can't get through with null pointer exception.here is my code.I have pointed out the line where I am getting null pointer exception.please help..thanks in advance.

package application.test; import android.app.Activity; import android.content.ContentResolver; import android.database.Cursor; import android.database.SQLException; import android.os.Bundle; import android.provider.ContactsContract; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.Contacts.Data; import android.util.Log; import android.view.LayoutInflater; import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RelativeLayout; public final class TestActivity extends Activity { String[] name; String[] phoneType; ListView lv; ListViewAdapter lva; public static final String TAG = "ContactManager"; @Override public void onCreate(Bundle savedInstanceState) { Log.v(TAG, "Activity State: onCreate()"); super.onCreate(savedInstanceState); LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT); LinearLayout mainLayout=new LinearLayout(this); mainLayout.setOrientation(LinearLayout.VERTICAL); LayoutInflater layoutInflater = getLayoutInflater(); mainLayout.addView(layoutInflater.inflate(R.layout.main,null)); mainLayout.addView(layoutInflater.inflate(R.layout.extra,null)); this.addContentView(mainLayout, params); lv = (ListView)findViewById(android.R.id.list); lva = new ListViewAdapter(this,name,phoneType); lv.setAdapter(lva); testGetContacts(); } private void testGetContacts() { ContentResolver cr = getContentResolver(); String[] projection = new String[] { Data._ID, ContactsContract.Contacts.DISPLAY_NAME, Phone.TYPE}; Cursor cur = cr.query(ContactsContract.Data.CONTENT_URI, projection, null, null, null); if (cur != null && cur.moveToFirst()) { try { int indexID = cur.getColumnIndexOrThrow(ContactsContract.Contacts._ID); int indexName = cur.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME); int indexPhoneType = cur.getColumnIndexOrThrow(Phone.TYPE); while (cur.moveToNext()) { int i=1; String id = cur.getString(indexID); //HERE LIES NULL POINTER EXCEPTION name[i] = cur.getString(indexName); //HERE TOO phoneType[i] = cur.getString(indexPhoneType); i++; System.out.println(id + " "); System.out.println(name + " "); System.out.println(phoneType + " "); } } catch (SQLException sqle) { //handling exception } finally { if (!cur.isClosed()) { cur.close(); } } } } }

推荐答案

在使用之前初始化 String[] 名称.你可以这样做:

Initialize String[] name before using it. You can do that like:

name=new String[cur.getCount()]; String s=""; while (cur.moveToNext()) { int i=1; String id = cur.getString(indexID); name[i] = cur.getString(indexName); phoneType[i] = cur.getString(indexPhoneType); //System.out.println(id + " "); //System.out.println(name + " "); //System.out.println(phoneType + " "); s=s+"id="+id+" name="+name[i]+" phoneType="+phoneType[i]+" "; i++; } Toast.makeText(getApplicationContext(),i+" - "+s).show();

在布局文件夹中创建一个 xml 文件.

Create an xml file in layout folder.

ma​​in.xml

<LinearLayout xmlns:android="schemas.android/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/listview" android:cacheColorHint="#0000" /> </LinearLayout>

现在在您的TestActivity.class:

public final class TestActivity extends Activity { String[] name; String[] phoneType; ListView lv; String s[]; public static final String TAG = "ContactManager"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.id.main); testGetContacts(); lv = (ListView)findViewById(R.id.listview); ArrayAdapter<String> sa=new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1,s); lv.setAdapter(sa); } private void testGetContacts() { ContentResolver cr = getContentResolver(); String[] projection = new String[] { Data._ID, ContactsContract.Contacts.DISPLAY_NAME, Phone.TYPE}; Cursor cur = cr.query(ContactsContract.Data.CONTENT_URI, projection, null, null, null); if (cur != null && cur.moveToFirst()) { try { int indexID = cur.getColumnIndexOrThrow(ContactsContract.Contacts._ID); int indexName = cur.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME); int indexPhoneType = cur.getColumnIndexOrThrow(Phone.TYPE); name=new String[cur.getCount()]; s=new String[cur.getCount()]; while (cur.moveToNext()) { int i=1; String id = cur.getString(indexID); name[i-1] = cur.getString(indexName); phoneType[i-1] = cur.getString(indexPhoneType); String temp="id="+id+"-name="+name[i-1]+"-phoneType="+phoneType[i-1]; s[i-1]=temp; i++; }

}

更多推荐

得到空指针异常?

本文发布于:2023-08-02 17:51:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1279871.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:指针   异常

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!