我正在做我的第一个Android应用程序,并希望直接使用ICS API。到目前为止,我已经使用ActionBar创建了一个应用程序,使用Viewpager和Fragments创建可滑动选项卡。
然而,我遇到了一些错误,我一直在解决这些错误。
根据我的实现方式,它总是返回一个“类型不匹配”错误:“无法从android.support.v4.app.Fragment转换为android.app.Fragment”。我尝试删除对任何一个的导入,当我只在TabListener,FragmentActivity和我的两个Fragment中使用android.support.v4.app.Fragment时,出现此错误。
错误发生在我的TabListener中:
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.Activity;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.util.Log;
public class TabListener implements ActionBar.TabListener {
private android.app.Fragment fragment;
private Activity activity;
private ViewPager pager;
private FragmentTransaction ft;
public TabListener(Activity activity, Fragment fragment, ViewPager pager) {
this.activity = activity;
this.fragment = fragment;
this.pager = pager;
}
@Override
public void onTabSelected(Tab tab, android.app.FragmentTransaction ft){
if (fragment == null) {
ft.add(fragment, null);
} else {
ft.attach(fragment);
}
}
@Override
public void onTabReselected(Tab tab, android.app.FragmentTransaction ft){
// TODO Auto-generated method stub
}
@Override
public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft){
// TODO Auto-generated method stub
}
}
通过删除“android.app.FragmentTransaction ft”,将其替换为“FragmentTransaction ft”,问题就消失了。然后出现了新问题:
“TabListener的onTabReselected(ActionBar.Tab,FragmentTransaction)方法必须覆盖或实现一个超类型方法TabListener.java”
“TabListener的onTabSelected(ActionBar.Tab,FragmentTransaction)方法必须覆盖或实现一个超类型方法TabListener.java”
“TabListener的onTabUnselected(ActionBar.Tab,FragmentTransaction)方法必须覆盖或实现一个超类型方法TabListener.java”
“TabListener类型必须实现继承的抽象方法ActionBar.TabListener.onTabReselected(ActionBar.Tab,FragmentTransaction) TabListener.java”
“TabListener类型必须实现继承的抽象方法ActionBar.TabListener.onTabSelected(ActionBar.Tab,FragmentTransaction) TabListener.java”
“TabListener类型必须实现继承的抽象方法ActionBar.TabListener.onTabUnselected(ActionBar.Tab,FragmentTransaction) TabListener.java”这里发生了什么?
正如您所理解的那样,我是Java和Android开发的新手。我感觉我很接近,但无法解决这个问题。我不明白为什么它想要“从android.support.v4.app.Fragment转换为android.app.Fragment,而我甚至没有引入android.app.Fragment。” 我猜这与使用兼容包有关。(当为最新版本的SDK创建应用程序时,我是否必须使用此包?)