2016-01-29 29 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来显示滑块。和我的主机片段类使用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() 

注意:无论您遇到错误,只需使用支持导入语句即可。

1

对于同样的事情你不能使用2个不同的库。您应该使用v4.app或app.Fragment为您的所有片段和片段管理器获取工作结果。

相关问题