关于Loader的使用问题

如果写了一个实现LoaderCallbacks接口的类,在使用的时候出现以下错误,那么恭喜你,和我遇到一样的问题,那就是包引错了,即在该实现类中引入的是v4包,而在使用该类对象的类中,获得loadermanager的时候,引入的是app的下的包,而非v4下的包。解决办法那当然是包要匹配,如果引入v4下的,那么你的Activity得继承FragmentActivity,从而调用getSupportLoaderManager();

java.lang.ClassCastException: cn.xxxxx.PhoneImage cannot be cast to android.app.LoaderManager$LoaderCallbacks

 

当然也可查看德问中的解答:http://www.dewen.io/q/3609

看你的代码你用的是supportV4库,你需要引入FragmentActivity库,你的Activity 继承FragmentActivity;另外用getSupportLoaderManager方法替换你的getLoaderManager。给你个例子:

  
  
  
  
  1. import android.os.Bundle;
  2. import android.support.v4.app.FragmentActivity;
  3. import android.support.v4.app.LoaderManager;
  4. import android.support.v4.content.Loader;
  5. import android.widget.Toast;

  6. public class MyActivity extends FragmentActivity implements LoaderManager.LoaderCallbacks<Object> {
  7. public void onCreate(Bundle savedInstanceState) {
  8.     super.onCreate(savedInstanceState);
  9.     setContentView(R.layout.main);
  10.     getSupportLoaderManager().initLoader(0, null, this);
  11. }

  12. public Loader<Object> onCreateLoader(int i, Bundle bundle){
  13.     return null; // TODO
  14. }

  15. public void onLoadFinished(Loader loader, Object o) {
  16.     Toast.makeText(this, "onLoadFinished", Toast.LENGTH_SHORT).show();
  17. }

  18. public void onLoaderReset(Loader loader)    {
  19.     Toast.makeText(this, "onLoaderReset", Toast.LENGTH_SHORT).show();
  20. }
  21. }

你可能感兴趣的:(关于Loader的使用问题)