无法使用射击库在片段中实例化列表



我的问题是,当我将此代码放入活动中时,它可以正常工作,但是当我尝试使用片段时,它会生成错误这是显示错误的地方:

public class CustomListAdapter extends BaseAdapter {
private Activity activity;
private LayoutInflater inflater;
private List<News> newItems;
ImageLoader imageLoader = AppController.getInstance().getImageLoader();
public CustomListAdapter(Activity activity, List<News> newItems) {
    this.activity = activity;
    this.newItems = newItems;
}
@Override
public int getCount() {
    return newItems.size();
}
@Override
public Object getItem(int location) {
    return newItems.get(location);
}
@Override
public long getItemId(int position) {
    return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (inflater == null)
        inflater = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (convertView == null)
        convertView = inflater.inflate(R.layout.list_row, null);
    if (imageLoader == null)
        imageLoader = AppController.getInstance().getImageLoader();
    NetworkImageView thumbNail = (NetworkImageView) convertView
            .findViewById(R.id.thumbnail);
    TextView title = (TextView) convertView.findViewById(R.id.title);
    // getting new data for the row
    News m = newItems.get(position);
    // thumbnail image
    thumbNail.setImageUrl(m.getImageURL(), imageLoader);
    // title
    title.setText(m.getTitle());
    return convertView;
}

}

public class AppController extends Application {
    public static final String TAG = AppController.class.getSimpleName();
    private RequestQueue mRequestQueue;
    private ImageLoader mImageLoader;
    private static AppController mInstance;
    @Override
    public void onCreate() {
        super.onCreate();
        mInstance = this;
    }
    public static synchronized AppController getInstance() {
        return mInstance;
    }
    public RequestQueue getRequestQueue() {
        if (mRequestQueue == null) {
            mRequestQueue = Volley.newRequestQueue(getApplicationContext());
        }
        return mRequestQueue;
    }
    public ImageLoader getImageLoader() {
        getRequestQueue();
        if (mImageLoader == null) {
            mImageLoader = new ImageLoader(this.mRequestQueue,
                    new LruBitmapCache());
        }
        return this.mImageLoader;
    }
    public <T> void addToRequestQueue(Request<T> req, String tag) {
        // set the default tag if tag is empty
        req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
        getRequestQueue().add(req);
    }
    public <T> void addToRequestQueue(Request<T> req) {
        req.setTag(TAG);
        getRequestQueue().add(req);
    }
    public void cancelPendingRequests(Object tag) {
        if (mRequestQueue != null) {
            mRequestQueue.cancelAll(tag);
        }
    }
}

这是日志:

05-06 01:36:54.754 23005-23005/pager.fakher.com.mypager E/Androidruntime:致命例外:主要 java.lang.nullpoInterException 在pager.fakher.com.mypager.adapter.customlistadapter。 在pager.fakher.com.mypager.fragments.actualitefragment.oncreateview(MATERITEFRAGMENT.JAVA:62) 在Android.support.v4.app.fragment.performcreateview(fragment.java:1789) 在Android.support.v4.app.FragmentManagerimpl.Movetostate(FragmentManager.java:955) 在Android.support.v4.app.FragmentManagerimpl.Movetostate(FragmentManager.java:1138) 在Android.support.v4.app.backstackrecord.run(backstackrecord.java:740) 在Android.support.v4.app.FragmentManagerimpl.execpendactions(FragmentManager.java:1501) 在android.support.v4.app.fragmentmanagerimpl.executependentsactions(fragmentManager.java:490) 在Android.support.v4.app.fragmentpageradapter.finishupdate(fragmentPageradapter.java:141) 在Android.support.v4.view.viewpager.populate(viewPager.java:1072) at android.support.v4.view.viewpager.populate(viewPager.java:918) at android.support.v4.view.viewpager.onmeasure(viewpager.java:1440) at android.view.view.measure(view.java:15876) 在android.widget.relativelayout.measurechildhorizontal(relativelayout.java:728) at android.widget.relativelayout.onmeasure(relativelayout.java:477) at android.view.view.measure(view.java:15876) at android.view.viewgroup.measurechildwithmargins(viewGroup.java:5023) at android.widget.framelayout.onmeasure(framelayout.java:310) at android.view.view.measure(view.java:15876) at android.view.viewgroup.measurechildwithmargins(viewGroup.java:5023) 在com.android.internal.widget.actionbaroverlaylaylayout.onmeasure(actionbaroverlaylayout.java:302) at android.view.view.measure(view.java:15876) at android.view.viewgroup.measurechildwithmargins(viewGroup.java:5023) at android.widget.framelayout.onmeasure(framelayout.java:310) 请访问com.android.internal.policy.impl.phonewindow $ docorview.onmeasure(phonewindow.java:2206) at android.view.view.measure(view.java:15876) at android.view.viewrootimpl.performmeasure(view rootimpl.java:1929) at android.view.viewRootimpl.measureHierArchy(view rootimpl.java:1113) at android.view.viewrootimpl.performtraversals(view rootimpl.java:1293) at android.view.viewrootimpl.dotraversal(view rootimpl.java:1013) at android.view.viewrootimpl $ traversalrunnable.run(view rootimpl.java:5507) at android.view.thotographer $ callbackRecord.run(choreographer.java:749) at Android.view.Choreographer.docallbacks(cohoregrapher.java:562) at android.view.choreographer.doframe(eboragrapher.java:532) at android.view.tecremather $ framedisPlayEventReceiver.run(ecreographer.java:735) 在Android.os.handler.handlecallback(Handler.java:730) 在Android.os.handler.dispatchMessage(Handler.java:92) at android.os.looper.loop(looper.java:137) at android.app.activitythread.main(activityThread.java:5473) 在java.lang.reflect.method.invokenative(本机方法) 在java.lang.reflect.method.invoke(method.java:525) 在com.android.internal.os.os.zygoteinit $ methodandargscaller.run(zygoteinit.java:854) 在com.android.internal.os.os.zygoteinit.main(zygoteinit.java:670) 在dalvik.system.nativestart.main(本机方法)

第24行是:

ImageLoader imageLoader = AppController.getInstance().getImageLoader();

我的看法是您忘了在像这样的清单中添加该应用程序实现

    <application
    android:name=".package.AppController "
    ...
    />

这就是getInstance返回null的原因。

来自应用程序类的Android指南:

注意:通常无需子类应用程序。在大多数情况下,静态单例可以以更模块化的方式提供相同的功能。如果您的单身人士需要一个全局上下文(例如要注册广播接收器),请在调用您的Singleton的getInstance()方法时inclate context.getApplicationContext()作为上下文参数。

https://developer.android.com/reference/android/anp/app/application.html

定期进行单身班,然后在那里接听电话。这是一个简单的例子:

public class Single {
    private static Single mInstance;
    private Single {}
    public static Single getInstance() {
        if (mInstance == null)
            mInstance = new Single();
        return mInstance; 
    }

}

最新更新