2017-07-18 16 views
0

第3引数が間違っていると言って、mainActivityにLoaderManager.LoaderCallbacksを実装しました。インターフェイスを実装するアクティビティを参照する方法は?

getSupportLoaderManager().initLoader(LOADER_ID,getUrlBundle(),this); 

どうしてですか?

public class MainActivity extends AppCompatActivity implements MovieAdapter.movieAdapterClickHandler,LoaderManager.LoaderCallbacks<List<Movie>> { 
    ... 
@Override 

     protected void onCreate(Bundle savedInstanceState) { 
    ... 


    getSupportLoaderManager().initLoader(LOADER_ID,getUrlBundle(),this); 
    } 
    ... 

@Override 
    public Loader<List<Movie>> onCreateLoader(int i, final Bundle bundle) { 
     return new AsyncTaskLoader<List<Movie>>(this) { 
      @Override 
      protected void onStartLoading() { 
       if(bundle==null) 
        return; 
       progressBar.setVisibility(View.VISIBLE); 
       errorMessage.setVisibility(View.INVISIBLE); 
       forceLoad(); 

      } 

      @Override 
      public List<Movie> loadInBackground() { 
       /* Extract the url from the args using our constant */ 
       String UrlString = bundle.getString(URL_EXTRA); 

       /* If the user didn't enter anything, there's nothing to search for */ 
       if (UrlString == null || TextUtils.isEmpty(UrlString)) { 
        return null; 
       } 

       return QueryUtils.fetchMovieData(UrlString); 
      } 

      @Override 
      public void deliverResult(List<Movie> data) { 
       super.deliverResult(data); 
      } 
     }; 



    } 

    @Override 
    public void onLoadFinished(Loader<List<Movie>> loader, List<Movie> movies) { 
     if (movies != null && !movies.isEmpty()) { 
      movieAdapter.MovieAdapterUpdate(movies); 
      progressBar.setVisibility(View.INVISIBLE); 
     } else { 
      progressBar.setVisibility(View.INVISIBLE); 
      errorMessage.setText("No data returned"); 
      errorMessage.setVisibility(View.VISIBLE); 

     } 
    } 


    @Override 
    public void onLoaderReset(Loader<List<Movie>> loader) { 

    } 
    } 
+0

試し 'getSupportLoaderManager()initLoader(LOADER_ID、getUrlBundle()、MainActivity.this);。 ' – SripadRaj

+0

それは輸入のためだと思われる – ams92

答えて

1

これは、使用しているローダークラスに間違ったインポートを使用している場合に発生します。たとえば、あなたが非サポートの依存関係とサポートの依存関係を混合しているとして、あなたは間違った三番目の引数の警告を取得します

import android.app.LoaderManager; 

とともに

import android.support.v4.content.AsyncTaskLoader; 
import android.support.v4.content.Loader; 
import android.support.v7.app.AppCompatActivity; 

を使用している場合。この一方で動作します:

import android.support.v4.app.LoaderManager; 
0

initLoader(int id, Bundle args, LoaderCallbacks<D> callback) 

Android Documentからあなたはローダコールバックに渡す必要が

関連する問題