错误:android.support.v4.content.Loader上的java.lang.NullPointerException

错误:android.support.v4.content.Loader上的java.lang.NullPointerException,第1张

概述我想在我的应用程序中实现LoaderManager以减少启动时间 As you can see here但是在该线程中实现建议后我得到以下错误类型LoaderManager中的initLoader(int,Bundle,LoaderManager.LoaderCallbacks)不适用于参数(int,null,MainActivity).在这里搜索后,我找到了第二个错误 here的解决方案.但是从 我想在我的应用程序中实现LoaderManager以减少启动时间 As you can see here但是在该线程中实现建议后我得到以下错误类型LoaderManager中的initLoader(int,Bundle,LoaderManager.LoaderCallbacks)不适用于参数(int,null,MainActivity).在这里搜索后,我找到了第二个错误 here的解决方案.但是从以后实现建议后,现在我收到错误java.lang.NullPointerException
在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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1124674.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存