在Fragment类中,我试图调用一个AsyncTask类,在doInBackground()中我试图获取Currentlocation并设置为TextView。
但是当我试图这样做时,它显示出错误,
E/AndroidRuntime(645): Caused by: java.lang.ClassCastException:com.example.MainFragmentActivity
从扩展FragmentActivity的MainFragmentActivity中,我设置了一个名为FragmentPagerAdapter的适配器,并在override getItem()
的这个适配器中调用了这个片段,如下所述,
@Override
public Fragment getItem(int position) {
if (position == 0) {
Log.i(TAG, "before return in adapter postion 0");
return ViewPageFragment.newInstance(CONTENT[position % CONTENT.length], context);
}
}
这是我的代码, http://pastebin.com/gykkETJV
我该如何解决这个问题?
堆栈跟踪:
E/ViewPageFragment(420): java.lang.ClassCastException: com.example.MainFragmentActivity
E/ViewPageFragment(420): com.example.ViewPageFragment$LocationTask.doInBackground(ViewPageFragment.java:145)
E/ViewPageFragment(420): com.example.ViewPageFragment$LocationTask.doInBackground(ViewPageFragment.java:1)
E/ViewPageFragment(420): android.os.AsyncTask$2.call(AsyncTask.java:185)
E/ViewPageFragment(420): java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
E/ViewPageFragment(420): java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
E/ViewPageFragment(420): java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
E/ViewPageFragment(420): java.lang.Thread.run(Thread.java:1096)
答案 0 :(得分:0)
看到ViewPageFragment的ClassCastException
和第145行是:
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 10, (LocationListener)context);
导致错误的原因可能是context
未扩展/实施LocationListener
。
由于我希望ViewPageFragment
扩展Fragment
,您可以使用getActivity()
代替context
作为最后一个参数。请记住,如果这样做,实例化Activity
的{{1}}必须扩展/实施ViewPageFragment
。