2016-01-29 3 views
-1

Прежде всего, я нашел сто вопросов по этой теме и решению, но ни один из них не помог мне. потому что я делаю малое обходное решение.FragmentPagerAdapter android.support.v4.app.fragment не применим к android.ap.Fragment

класс FragmentPagerAdapter конструктор

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 

public class HomePage_Slider extends FragmentPagerAdapter { 
    public HomePage_Slider(FragmentManager fragmentManager) { 
     super(fragmentManager); 
     MyArr.addAll(globalVariable.slider_image_url); 
     mCount =MyArr.size(); 
    } 

    public HomePage_Slider(android.app.FragmentManager fragmentManager) { 
     super(fragmentManager); 
    } 
} 

Фрагмент класса

import android.app.Fragment; 

public class host extends Fragment { 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     rootview = inflater.inflate(R.layout.content_navigation_drawer, container, false); 
     Top_slider = rootview.findViewById(R.id.home_slider_image); 
     viewPager = (ViewPager) Top_slider.findViewById(R.id.pager); 
     viewPager.setAdapter(new HomePage_Slider(getActivity().getFragmentManager())); 
     } 

} 

Я использую панель навигации с использованием библиотеки поддержки и этим руководством Navigation Drawer Tutorial. и пытается использовать FragmentPagerAdapter для отображения слайдера. и мой хозяин класс Fragment использует import android.app.Fragment; и класс FragmentPagerAdapter использует import android.support.v4.app.Fragment;

Из моего класса хозяина фрагмента не импортирует import android.support.v4.app.Fragment;
FragmentPagerAdapter конструктора дает ошибку FragmentPagerAdapter android.support.v4.app.fragment не может быть применен к Android. ap.Fragment

во время поиска решение Я нашел, что это изменение моего импорта будет делать трюк, но мое приложение для отдыха перестанет работать. используется import android.app.Fragment; делать другую работу как вызов другой транзакции класса Фрагмент что-то вроде этого

//Host Fragment have this code to swap to next Fragment on click event on listview 
((MainActivity)getActivity()).category_product_page(); 

    // class contains 
    MainActivity.java 

// go to wishlist page 
    public void category_product_page() { 
     // Create new fragment and transaction 
     cart_product newFragment = new cart_product(); 
     FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
     // Replace whatever is in the fragment_container view with this fragment, 
     // and add the transaction to the back stack 
     transaction.replace(R.id.frame_container, newFragment); 
     transaction.addToBackStack(null); 
     // Commit the transaction 
     transaction.commit(); 
    } 

, и я также сделал некоторые другие работы на хосте фрагмента, поэтому я не могу изменить import android.app.Fragment " импортировать android.support.v4.app.Fragment; любое предложение будет полезно.

Пожалуйста, подсказывают, как можно преодолеть эту ошибку и предотвратить эти ошибки в будущем, как мой второй приложение имеет слайдер

ответ

2

FragmentPagerAdapter android.support.v4.app.fragment не применяется к android.ap.Фрагмент

При использовании android.support.v4.app.FragmentManager, то вы должны использовать getSupportFragmentManager(), и если вы используете android.app.FragmentManager затем вызвать getFragmentManager()

Вы используете import android.support.v4.app.Fragment;

не

viewPager.setAdapter(new HomePage_Slider(getActivity().getFragmentManager())); 
    FragmentTransaction transaction = getFragmentManager().beginTransaction(); 

ли

 viewPager.setAdapter(new HomePage_Slider(getActivity().getSupportFragmentManager())); 
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 

Вы должны позвонить getSupportFragmentManager() вместо getFragmentManager().

Возврат FragmentManager для взаимодействия с связанными фрагментами с этой деятельностью.

1
getSupportFragmentManager() 

вместо

getFragmentManager() 

должен сделать трюк.

1

Изменить

import android.app.Fragment; 

в

import android.support.v4.app.Fragment; 

После этого использования

getSupportFragmentManager() 

где вы используете

getFragmentManager() 

Примечание: Anywher вы получаете ошибку, просто используйте заявления импорта поддержки.

1

Вы не можете использовать две разные библиотеки для одной и той же вещи. Вы должны использовать v4.app или app.Fragment для всех ваших фрагментов и менеджеров фрагментов, чтобы получить рабочий результат.

Смежные вопросы