Я занимаюсь своим первым Android-приложением и хотел получить прямо в ICS API. Я до сих пор создал приложение, использующее ActionBar, с простыми вкладками с использованием Viewpager и Fragments.Невозможно преобразовать из android.support.v4.app.Fragment в android.app.Fragment
У меня есть некоторые ошибки, с которыми я постоянно возвращаюсь.
В зависимости от того, как я его реализую, он всегда возвращается к ошибке «Ошибка несоответствия типа»: «невозможно преобразовать из android.support.v4.app.Fragment в android.app.Fragment». Я попытался удалить все ссылки на импорт, и эта ошибка появляется, когда я использую только android.support.v4.app.Fragment в TabListener, FragmentActivity и моих двух фрагментах.
Ошибка возникает в моем 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 футов", заменив его просто "FragmentTransaction футов", проблема идет awawy. Затем возникают новые проблемы:
The method onTabReselected(ActionBar.Tab, FragmentTransaction) of type TabListener must override or implement a supertype method TabListener.java
The method onTabSelected(ActionBar.Tab, FragmentTransaction) of type TabListener must override or implement a supertype method TabListener.java
The method onTabUnselected(ActionBar.Tab, FragmentTransaction) of type TabListener must override or implement a supertype method TabListener.java
The type TabListener must implement the inherited abstract method ActionBar.TabListener.onTabReselected(ActionBar.Tab, FragmentTransaction) TabListener.java
The type TabListener must implement the inherited abstract method ActionBar.TabListener.onTabSelected(ActionBar.Tab, FragmentTransaction) TabListener.java
The type TabListener must implement the inherited abstract method ActionBar.TabListener.onTabUnselected(ActionBar.Tab, FragmentTransaction) TabListener.java
Что здесь происходит?
Как вы понимаете, я новичок в разработке Java и Android. Я чувствую себя довольно близко, но я не могу решить эту проблему. Я не понимаю, почему он хочет «конвертировать из android.support.v4.app.Fragment в android.app.Fragment, когда я даже не импортирую файл android.app.Fragment в любом месте.
Я думаю, это связано с используя пакет совместимости. (Должен ли я вообще использовать этот пакет при создании приложения для самой новой версии SDK?)
Я понимаю. Я попытался удалить необходимость использования пакета поддержки, но тогда у меня осталась другая проблема в моем FragmentPagerAdapter, которую я не могу импортировать как «android.app.FragmentPagerAdapter». > Возвращаемый тип несовместим с FragmentPagerAdapter.getItem (int) MainFragmentActivity.java Здесь он пытается вернуть фрагмент, который является фрагментом mFragment = LatestFragment.newInstance (position); – SLekvak
Совершенно разумно иметь цель сборки уровня API 11 или выше * и * использовать пакет поддержки Android. – CommonsWare
@CommonsWare: у меня создалось впечатление, что пакет поддержки (v4) был построен на функциях с уровня API 11 (пакет v13 проскользнул у меня), но в случае op, когда он разрабатывает ICS (API> 13), содержимое пакетов должно поддерживаться без дополнительных пакетов, или я ошибаюсь? – Jave