
在androID.support.v4.content.Loader.我正在提供我目前拥有的代码,任何人都可以告诉我,我该如何解决这个问题
可以看到完整的代码HERE
记录猫
10-03 20:11:34.849: E/AndroIDRuntime(2968): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.sms.it/com.test.sms.it.MainActivity}: java.lang.NullPointerException10-03 20:11:34.849: E/AndroIDRuntime(2968): at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:1647)10-03 20:11:34.849: E/AndroIDRuntime(2968): at androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)10-03 20:11:34.849: E/AndroIDRuntime(2968): at androID.app.ActivityThread.access00(ActivityThread.java:117)10-03 20:11:34.849: E/AndroIDRuntime(2968): at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:931)10-03 20:11:34.849: E/AndroIDRuntime(2968): at androID.os.Handler.dispatchMessage(Handler.java:99)10-03 20:11:34.849: E/AndroIDRuntime(2968): at androID.os.Looper.loop(Looper.java:123)10-03 20:11:34.849: E/AndroIDRuntime(2968): at androID.app.ActivityThread.main(ActivityThread.java:3683)10-03 20:11:34.849: E/AndroIDRuntime(2968): at java.lang.reflect.Method.invokeNative(Native Method)10-03 20:11:34.849: E/AndroIDRuntime(2968): at java.lang.reflect.Method.invoke(Method.java:507)10-03 20:11:34.849: E/AndroIDRuntime(2968): at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)10-03 20:11:34.849: E/AndroIDRuntime(2968): at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:597)10-03 20:11:34.849: E/AndroIDRuntime(2968): at dalvik.system.NativeStart.main(Native Method)10-03 20:11:34.849: E/AndroIDRuntime(2968): Caused by: java.lang.NullPointerException10-03 20:11:34.849: E/AndroIDRuntime(2968): at androID.support.v4.content.Loader.<init>(Loader.java:91)10-03 20:11:34.849: E/AndroIDRuntime(2968): at androID.support.v4.content.AsyncTaskLoader.<init>(AsyncTaskLoader.java:92)10-03 20:11:34.849: E/AndroIDRuntime(2968): at com.test.sms.it.MainActivity$ContactsDataLoader.<init>(MainActivity.java:104)10-03 20:11:34.849: E/AndroIDRuntime(2968): at com.test.sms.it.MainActivity.onCreateLoader(MainActivity.java:496)10-03 20:11:34.849: E/AndroIDRuntime(2968): at androID.support.v4.app.LoaderManagerImpl.createLoader(LoaderManager.java:487)10-03 20:11:34.849: E/AndroIDRuntime(2968): at androID.support.v4.app.LoaderManagerImpl.createAndInstallLoader(LoaderManager.java:496)10-03 20:11:34.849: E/AndroIDRuntime(2968): at androID.support.v4.app.LoaderManagerImpl.initLoader(LoaderManager.java:550)10-03 20:11:34.849: E/AndroIDRuntime(2968): at com.test.sms.it.MainActivity.onCreate(MainActivity.java:91)10-03 20:11:34.849: E/AndroIDRuntime(2968): at androID.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)10-03 20:11:34.849: E/AndroIDRuntime(2968): at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:1611) MainActivity.java
import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import androID.app.AlertDialog;import androID.app.ProgressDialog;import androID.content.Context;import androID.content.DialogInterface;import androID.content.Intent;import androID.content.SharedPreferences;import androID.database.Cursor;import androID.graphics.color;import androID.net.ConnectivityManager;import androID.net.NetworkInfo;import androID.net.Uri;import androID.os.AsyncTask;import androID.os.Bundle;import androID.preference.PreferenceManager;import androID.provIDer.ContactsContract;import androID.support.v4.app.FragmentActivity;import androID.support.v4.app.LoaderManager;import androID.support.v4.content.AsyncTaskLoader;import androID.support.v4.content.Loader;import androID.vIEw.KeyEvent;import androID.vIEw.Menu;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OnClickListener;import androID.vIEw.Window;import androID.Widget.AdapterVIEw;import androID.Widget.AdapterVIEw.OnItemClickListener;import androID.Widget.autoCompleteTextVIEw;import androID.Widget.button;import androID.Widget.EditText;import androID.Widget.SimpleAdapter;import androID.Widget.Spinner;import androID.Widget.Toast;@OverrIDepublic voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestwindowFeature(Window.FEATURE_NO_Title); setContentVIEw(R.layout.activity_main); editUser1Username = (EditText) findVIEwByID(R.ID.editTextUser1Username); editUser1Password = (EditText) findVIEwByID(R.ID.editTextUser1Password); editUser2Username = (EditText) findVIEwByID(R.ID.editTextUser2Username); editUser2Password = (EditText) findVIEwByID(R.ID.editTextUser2Password); editUser3Username = (EditText) findVIEwByID(R.ID.editTextUser3Username); editUser3Password = (EditText) findVIEwByID(R.ID.editTextUser3Password); editUser4Username = (EditText) findVIEwByID(R.ID.editTextUser4Username); editUser4Password = (EditText) findVIEwByID(R.ID.editTextUser4Password); editUser5Username = (EditText) findVIEwByID(R.ID.editTextUser5Username); editUser5Password = (EditText) findVIEwByID(R.ID.editTextUser5Password); mTxtPhoneNo = (autoCompleteTextVIEw) findVIEwByID(R.ID.mmWhoNo); mTxtPhoneNo.setThreshold(1); mTxtPhoneNo.setTextcolor(color.BLACK); editText = (EditText) findVIEwByID(R.ID.editTextMessage); spinner1 = (Spinner) findVIEwByID(R.ID.spinnerGateway); btnsend = (button) findVIEwByID(R.ID.btnSend); btnContact = (button) findVIEwByID(R.ID.btnContact); btnClear = (button) findVIEwByID(R.ID.btnClear); btnClear.setonClickListener(this); btnsend.setonClickListener(this); btnContact.setonClickListener(this); mPeopleList = new ArrayList<Map<String,String>>(); getSupportLoaderManager().initLoader(0,this); mTxtPhoneNo.setonItemClickListener(this); readPerson(); Panel panel; topPanel = panel = (Panel) findVIEwByID(R.ID.mytopPanel); panel.setonPanelListener(this); panel.setInterpolator(new BounceInterpolator(Type.OUT)); getLoginDetails();}public class ContactsDataLoader extends AsyncTaskLoader<ArrayList<Map<String,String>>> { public ContactsDataLoader(Context context) { super(context); } @OverrIDe public ArrayList<Map<String,String>> loadInBackground() { mPeopleList.clear(); Cursor people = getContentResolver().query( ContactsContract.Contacts.CONTENT_URI,null); while (people.movetoNext()) { String contactname = people .getString(people .getColumnIndex(ContactsContract.Contacts.disPLAY_name)); String contactID = people.getString(people .getColumnIndex(ContactsContract.Contacts._ID)); String hasPhone = people .getString(people .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); if ((Integer.parseInt(hasPhone) > 0)) { Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI,ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactID,null); while (phones.movetoNext()) { String phoneNumber = phones .getString(phones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); String numberType = phones .getString(phones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); Map<String,String> namePhoneType = new HashMap<String,String>(); namePhoneType.put("name",contactname); namePhoneType.put("Phone",phoneNumber); if (numberType.equals("0")) namePhoneType.put("Type","Work"); else if (numberType.equals("1")) namePhoneType.put("Type","Home"); else if (numberType.equals("2")) namePhoneType.put("Type","Mobile"); else namePhoneType.put("Type","Other"); mPeopleList.add(namePhoneType); } phones.close(); } } people.close(); startManagingCursor(people); return mPeopleList; } @OverrIDe protected voID onStartLoading() { super.onStartLoading(); forceLoad(); }}public Loader<ArrayList<Map<String,String>>> onCreateLoader(int ID,Bundle args) { return new ContactsDataLoader(context);}public voID onLoadFinished(Loader<ArrayList<Map<String,String>>> loader,ArrayList<Map<String,String>> data) { mPeopleList = data; mAdapter = new SimpleAdapter(this,mPeopleList,R.layout.custcontvIEw,new String[] { "name","Phone","Type" },new int[] { R.ID.ccontname,R.ID.ccontNo,R.ID.ccontType }); mTxtPhoneNo.setAdapter(mAdapter);}public voID onLoaderreset(Loader<ArrayList<Map<String,String>>> loader) { mPeopleList = new ArrayList<Map<String,String>>(); mAdapter = new SimpleAdapter(this,R.ID.ccontType }); mTxtPhoneNo.setAdapter(mAdapter);}解决方法 RC的评论是你问题的答案.您传递一个空上下文(因为我没有看到您使用有效引用初始化的上下文变量的代码中的任何位置)到您的自定义加载器,并且代码将失败并出现NullPointerException.如果您使用了我之前的答案中的代码,那么这些回调就会在您的Activity中实现.在这种情况下,只需将对当前Activity实例的引用传递给自定义加载器: public Loader<ArrayList<Map<String,Bundle args) { return new ContactsDataLoader(this);} 此外,如果关闭游标,则无需为该游标使用startManagingCursor(),因为您可能遇到麻烦.
总结以上是内存溢出为你收集整理的错误:android.support.v4.content.Loader上的java.lang.NullPointerException全部内容,希望文章能够帮你解决错误:android.support.v4.content.Loader上的java.lang.NullPointerException所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)