FragmentPagerAdapter android.support.v4.app.fragment无法应用于android.ap.Fragment

时间:2016-01-29 10:17:47

标签: java android android-layout android-fragments

首先,我在这个主题和解决方案上找到了数百个问题,但没有一个能帮助我。因为我做了一些不同的解决方法。

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来显示滑块。和My Host Fragment类使用import android.app.Fragment;,FragmentPagerAdapter类使用import android.support.v4.app.Fragment;

由于我的主机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;的原因 任何建议都会有所帮助。

请建议我如何克服此错误并防止以后出现这些错误,因为我的第二个应用有滑块

4 个答案:

答案 0 :(得分:3)

FragmentPagerAdapter android.support.v4.app.fragment无法应用于android.ap.Fragment

  

当你使用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 :(得分:1)

getSupportFragmentManager()

而不是

getFragmentManager()

应该这样做。

答案 2 :(得分:1)

更改

import android.app.Fragment; 

import android.support.v4.app.Fragment;

之后使用

getSupportFragmentManager()

您正在使用

getFragmentManager()

注意:如果您收到错误,只需使用支持导入语句。

答案 3 :(得分:1)

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