LoaderManager不接受“此" [英] LoaderManager does not accept 'this'

查看:123
本文介绍了LoaderManager不接受“此"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好的,我投降了.我无法弄清楚.

Okay, I surrender. I cannot figure it out.

我正在学习有关Android Basics的Udacity课程,并且需要弄清楚如何使用Loader加载数据.但是,当我使用以下行时,"this"以红色突出显示并显示以下错误:

I'm following a Udacity course on Android Basics and need to figure out how to load data using a Loader. However, when I use the following line, the 'this' is highlighted in red and showing the following error:

Wrong 3rd argument type. Found 'com.example.carl.latestnews.MainActivity', required: 'android.app.LoaderManager.LoaderCallbacks<java.lang.Object>

我已经搜索,堆积并尝试了我发现的建议.我尝试创建一个实现回调的内部类.我碰到了砖墙,我坐在这里挠头试图找出我所缺少的!

I've googled, stacked and tried suggestion I've found. I've tried creating an inner class which implements the call backs. I've hit a brickwall and I'm sat here scratching my head trying to figure out what I'm missing!

有人可以告诉我我在做什么错吗?

Can anyone tell me what I'm doing wrong here?

提前谢谢!

package com.example.carl.latestnews;


 import android.content.Context; 
 import android.os.Bundle; 
 import android.support.v4.app.LoaderManager; 
 import android.support.v4.content.AsyncTaskLoader; 
 import android.support.v4.content.Loader; 
 import android.support.v7.app.AppCompatActivity; 
 import android.view.View; 
 import android.widget.ListView; 
 import android.widget.TextView;
 import java.util.ArrayList;

 public class MainActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<ArrayList<ArticleObject>> {

     // ArticleObject is a custom object which contains a headline, date, category etc of a news article

     // URL for Guardian API including API Key
     final static String GUARDIAN_API_URL = "https://content.guardianapis.com/search?";

     // API Key
     final static String GUARDIAN_API_KEY = "test";

     // ID for LoaderManager
     final static int LOADER_MANAGER_ID = 0;


     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);

         // Get or initialize loader manager
         getLoaderManager().initLoader(LOADER_MANAGER_ID, null, this);

     }

     @Override
     public Loader<ArrayList<ArticleObject>> onCreateLoader(int id, Bundle args) {
         return new dataLoader(); // dataLoader() removed for easy reading
     }

     @Override
     public void onLoadFinished(Loader<ArrayList<ArticleObject>> loader, ArrayList<ArticleObject> data) {
         / UI Update Code
     }

     @Override
     public void onLoaderReset(Loader<ArrayList<ArticleObject>> loader) {
         // Reset Code
     }




 }

推荐答案

该方法期望LoaderCallbacks作为参数.

That method expects LoaderCallbacks as an argument.

您的活动需要实现 LoaderCallbacks接口. 或者 您提供该接口的匿名实现,例如:

Your Activity needs to implement the LoaderCallbacks interface. OR you provide an anonymous implementation of that interface like:

    LoaderManager.LoaderCallbacks callbacks = new LoaderManager.LoaderCallbacks() {
        @Override
        public Loader onCreateLoader(int id, Bundle args) {
            return null;
        }

        @Override
        public void onLoadFinished(Loader loader, Object data) {

        }

        @Override
        public void onLoaderReset(Loader loader) {

        }

  getLoaderManager().initLoader(LOADER_MANAGER_ID, null, callback);

不过接口方法的实现取决于您,此代码无法立即起作用.

Implementation of the interface methods is up to you though, this code won't work right away.

这篇关于LoaderManager不接受“此"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆