我在我的项目中遇到LoaderCallbacks的问题。我在android studio中实现了LoaderManager。每当用户按下搜索按钮时,我都试图重新启动加载程序。

public class MainActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<List<Book>>


 mSearchButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Check connection status
                checkConnection(cm);
                if (isConnected) {
                    updateQueryUrl(mSearchViewField.getQuery().toString());
                    restartLoader();
                    Log.i(LOG_TAG, "Search value: " + mSearchViewField.getQuery().toString());
                }else{
                    // Clear the adapter of previous book data
                    mAdapter.clear();
                    // Set mEmptyStateTextView visible
                    mEmptyStateTextView.setVisibility(View.VISIBLE);
                    // ...and display message: "No internet connection."
                    mEmptyStateTextView.setText("No Internet Connection");
                }
            }
        });



但是,在restartLoader()下,当我尝试调用getLoaderManager()重新启动加载程序时,这是说回调参数错误,第三个参数类型。我不确定我应该使用什么回调。


public void restartLoader() {
        mEmptyStateTextView.setVisibility(GONE);
        progressBar.setVisibility(View.VISIBLE);
        getLoaderManager().restartLoader(BOOK_LOADER_ID,null, MainActivity.this);
    }

最佳答案

getLoaderManager已弃用,并已弃用框架加载程序。

您应该改用LoaderManager.getInstance(MainActivity.this),它使用正确的支持库/ AndroidX加载程序,可能是您导入的LoaderManager.LoaderCallbacks

LoaderManager.getInstance(MainActivity.this)
    .restartLoader(BOOK_LOADER_ID, null, MainActivity.this);

10-07 20:52