我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<BookData> arrayList = new ArrayList<>();
recyclerAdapter = new RecyclerAdapter(this,arrayList);
recyclerview = (RecyclerView)findViewById(R.id.recyclerView);
recyclerview.setLayoutManager(new
LinearLayoutManager(this));
recyclerview.setAdapter(recyclerAdapter);
android.app.LoaderManager loaderManager = getLoaderManager();
Log.i(TAG, "Now calling initLoader");
loaderManager.initLoader(BOOK_LOADER_ID, null, this);
DividerItemDecoration dividerItemDecoration = new
DividerItemDecoration(this,DividerItemDecoration.VERTICAL);
recyclerview.addItemDecoration(dividerItemDecoration);
}
@NonNull
@Override
public Loader<List<BookData>> onCreateLoader(int id, @Nullable Bundle args) {
Log.i(TAG,"Problem with onCreateloader");
return new BookLoader(MainActivity.this,GOOGLEBOOKURL);
}
@Override
public void onLoadFinished(@NonNull Loader<List<BookData>> loader, List<BookData> data) {
recyclerAdapter.clear();
if (data != null && !data.isEmpty()) {
recyclerAdapter.addAll(data);
}
}
@Override
public void onLoaderReset(@NonNull Loader<List<BookData>> loader) {
recyclerAdapter.clear();
Log.i(TAG, "Now loader is resetting");
}
显示类定义的屏幕截图
错误:
Process: com.example.booklistapp, PID: 8575
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.booklistapp/com.example.booklistapp.MainActivity}: java.lang.ClassCastException: com.example.booklistapp.MainActivity cannot be cast to android.app.LoaderManager$LoaderCallbacks
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
我试图解决我在androidx中遇到的错误,但是没有 initloader()
以及 getManager()
调用加载程序。如何通过initloader调用加载程序?
android.app.LoaderManager loaderManager = getLoaderManager();
Log.i(TAG, "Now calling initLoader");
loaderManager.initLoader(BOOK_LOADER_ID, null, this);
我在androidx加载程序中使用android应用程序加载程序,因为没有 initLoader()
以及 getManager()
在androidx。
谢谢您。
1条答案
按热度按时间xxb16uws1#
我有装载机在androidx工作:
我的导入看起来像:
碎片如下:
活动如下:
你需要
AppCompatActivity
:我需要打电话
getSupportLoaderManager()
不是getLoaderManager()
:但理想情况下,您希望在加载程序是开发的基石时摆脱它们,现在它们已被弃用。